Що пропонує Бібліотека закриття Google через jQuery? [зачинено]


190

Враховуючи

  • фон бізнесу
  • підтримка громади
  • доступні розширення
  • набір функцій за замовчуванням
  • простота використання
  • та надійність

чому ви віддаєте перевагу одне над іншим?


1
Я думаю, що важко буде сказати, чому одне віддається перевагу іншому, поки люди не експериментують із програмами та не побачать, які межі закриття.
Джеймс Блек

3
Деякі порівняння синтаксису тут: derekslager.com/blog/posts/2010/06/…
користувач194743

4
Ця стаття може також допомогти у прийнятті рішення. Ключовий урок: «Закриття - це екосистема. Це не як jQuery, де ви просто використовуєте його тут і там, щоб полегшити доступ або маніпулювати DOM. Якщо ви хочете по-справжньому використовувати функцію закриття, ви повинні взяти на себе зобов’язання по-справжньому використовувати її ".
Дан Абрамов

2019 Що таке закриття Google? : D
evilReiko

Відповіді:


176

Я спробую додати свою інформацію.

Більше, ніж інша ліжка JS

Як я розумію, Google Closing - це не лише інша бібліотека JS, але це також набір інструментів, які дозволять оптимізувати код JS. Робота з jQuery дає вам хороші інструменти та легку бібліотеку, але це не мінімізує ваш власний код. Компілятор Закриття буде. Закриття інспектор може також бути корисним, так як іноді зменшений код має різну поведінку , ніж оригінальний, і біль для налагодження. Він інтегрується з тестами Firebug та модулем підтримки, які є найкращими друзями розробників на сьогодні.

Документація

Я здогадуюсь, що як і будь-яка нова бібліотека VS добре зарекомендувала себе, їй не вистачить наявності тонн розширень та підручника, який має jQuery. Однак натискання Google повинно забезпечити, що підтримка та надійність будуть досить хорошими. Поточна документація та навчальний посібник теж здаються непоганими.

Особливості

Характеристики закриття виглядають пристойно, але перспективна і його модульна архітектура. Я здогадуюсь, Google вже давно використовує її внутрішньо, а це означає, що ви можете розраховувати на реалізацію всіх основних функцій (і більше), імовірно, на дуже оптимізований та масштабований спосіб. Вони намагаються представити його як STL JavaScript, тому вони повинні були відполірувати його.

Після більш детального розгляду функцій, здається, що це може бути кроком вперед для розробки веб-додатків порівняно з існуючими бібліотеками як jQuery. Напевно, це приносить користь внутрішнім розробкам в Google, але такі речі, як виявлення стану в Інтернеті (див. Goog.events.OnlineHandler ), проста інтеграція запитів AJAX та JS-дії в історію браузера (див. Goog.History ) або легіони великих віджетів вони надають (див. пакет goog.ui ) можуть допомогти нам створити ще більш приголомшливі веб-сайти;)!

Він постачається з шаблонами, які інтегруються з Java (хто сказав GWT ?), Тож це також може бути ще одним плюсом для закриття.

Простота використання

Нарешті, це виглядає досить просто у використанні. Синтаксис може бути трохи більш багатослівним, ніж коротка функція $ jQuery, але з IDE та автоматичним доповненням це не справжня проблема. Більше того, я б сказав, що ми можемо очікувати на хорошу інтеграцію в IDE, такі як Eclipse, що надходять від Google.

EDIT: за потребою, дозвольте сказати кілька слів про посилання GWT. Google Web Toolkit - це бібліотека Java, яка дозволяє створювати веб-інтерфейси з підтримкою AJAX і створює (і оптимізує) необхідний код JavaScript. Оскільки закриття Google дозволяє створювати шаблони, які можна використовувати як на клієнтській, так і на серверній основі (за допомогою JavaScript та Java), я здогадуюсь, що незабаром можна буде використовувати їх спільно (якщо це вже не так).


5
Детальна та змістовна відповідь, дякую. Чи можете ви пояснити, що означає це посилання на GWT? Боюся, я цього не зрозумів.
pestaa

1
Я думаю, ви також повинні згадати бібліотеку шаблонів (Soy) у своєму розділі "Більше ніж". Один і той же файл шаблону може використовуватися як на сервері (Java), так і на стороні клієнта. Дійсно приємна реалізація IMO. Значить, ми можемо просто надсилати JSON в AJAX-запитах, а не надсилати HTML - економить пропускну здатність.
Френк Крюгер

1
Я щойно виявив критику щодо закриття, але, можливо, це просто FUD
nalply

7
Критика не FUD, і дякую за посилання. Критика зосереджена на тому, як код JavaScript не є оптимальним скрізь. Це може бути дійсним, але воно пропускає більшу точку. Як я розумію, Closure націлений на дійсно складні програми JS (за шкалою GMail), і це має певні наслідки - такі, як не кожен рядок є оптимальним, оскільки все не написано жодним блискучим кодером. Але навпаки, це може масштабуватися далі як рамка інженерної програми.
Пітер S Магнуссон

3
@nalpy Як запропоновано коментарями, ця стаття не згадала, що бібліотека має КОМПІЛЕР (а не мініфікатор), який може оптимізувати ці проблеми кодування.
Мураха

30

У моєму короткому розгляді API я виявляю, що відмінності між jQuery та Closure вражають.

jQuery - це просто спрощений спосіб робити багато часті операції крос-браузерним способом.

Закриття - це дуже нова рамка, оскільки вони надають крос-браузерний спосіб використання <canvas>тегу, наприклад, і вони додають нові події.

Отже, це додає до того, що ми зазвичай робимо з JavaScript, вони виконують багато операцій, які люди хочуть зробити, і вводять їх в API.

Наприклад, у них є подія, щоб повідомити, чи змінився стан онлайн. Тож ви можете сказати, чи система в мережі.

Вони мають функції JavaScript, які використовують такі інструменти, як Google Gears, що продовжує той факт, що вони розширили те, що можна зробити з Javascript.

Щоб перетравити всі зміни, мені знадобиться пару днів, але я можу побачити, що це може мати великий вплив на веб-додатки, які можна розробити.


25

Найбільша перевага бібліотеки закриття полягає в тому, що призначений для компілятора закриття. Це відкриває абсолютно нові можливості для розробки JavaScript ...

У компілятора є кілька цікавих функцій:

  • Він компілює читабельний JavaScript у стислий машиночитаний JavaScript - він має найкращий коефіцієнт стиснення в режимі "ДОПОГАДЕНО".
  • Документація коду з тегами JSDoc важлива: компілятор читає його, і ви отримуєте попередження під час компіляції щодо помилок у документації, неправильного використання @constructor, неправильного типу змінної , неправильного використання поля, позначеного @prvate та @protected, тощо.
  • Якщо ви пишете бібліотеку JavaScript для багаторазового використання, наприклад OpenLayers або Google Maps, ви формально експортуєте свій загальнодоступний API - і компілятор оптимізує ваш внутрішній код.
  • Кінцеві програми можна скласти разом з бібліотекою - і тоді невикористані частини бібліотеки видаляються із створеного коду. Залежності вирішуються автоматично компілятором.
  • Компілятор приймає константи для видалення небажаних функціональних можливостей - це дозволяє компілювати лише для конкретного браузера, такого як Mobile WebKit, лише для одного режиму Quirks або Strict mode, компіляції без підтримки IE6 тощо.
  • Налагодження з FireBug можливе навіть для складеної версії вихідного коду.
  • Компілятор підтримує генерацію динамічно завантажуваних модулів, що може значно пришвидшити завантаження кінцевої програми, оскільки код для розширеної функціональності можна завантажувати лише тоді, коли це потрібно.

Детальніше дивіться на: http://blog.klokantech.com/2010/12/closure-compiler-for-openlayers-3x.html


20

Редагувати : подивіться це відео на YouTube, воно може відповісти на деякі запитання щодо закриття Google.

Напевно, найкращими джерелами інформації про закриття google є група обговорень проектів , вікі, doc-сторінки, демонстрації та ще незакінчена книга Майкла Боліна, яка зараз доступна на сайті книг сафарі.

одне, що я можу сказати одразу - існує більш крута крива навчання для closurevs, jQueryале це, можливо, варто того, завдяки величезній бібліотеці, чіткій організації та перевазі використання її разом із компілятором та інструментом для створення шаблонів.

closureбібліотека в цьому відношенні більше схожий , dojoніж jQuery, і деякі поняття запозичені з dojo, за словами Майкла Болина.

компілятор закриття google використовує JSDocсистему документації, яка одночасно (якщо створена програмістом правильно) надає документацію та дозволяє виявляти багато помилок під час компіляції.

в той час як імена функцій більш багатослівні, ніж jQuery', компілятор зменшує код (використовуючи різні тактики оптимізації), і перевірка типу дозволить заощадити чималий час налагодження коду, тому час набору тексту у довших іменах, мабуть, не є проблемою. При цьому довші назви додають читабельності.

Бібліотека підтримує браузери, що працюють у режимі диваків, щоб сценарії могли бути вбудовані на інші сайти за допомогою "химерного" html

бібліотека працює з (але не залежить від) системою шаблонів JavaScript, soyяка спрощує заповнення документів вмістом.

як jQuerygoogle closureдозволяє переглядати структуру dom із рядковими запитами, використовуючи виділений компонент бібліотеки.

closureБібліотека більше схожа на розмежовані крапкові простори імен Java- дуже сильна організаційна особливість.

використання таких просторів імен призведе до накладних витрат у некомпільованому коді, але у складеному коді ці речі заміняються короткими назвами змінних.


1
Я шукав щось інше і опинився тут, але добре знати, like jQuery google closure allows traversing dom structure with the string-based queries using a dedicated component of the library.чи можете ви зв’язати мене з деякою документацією, пов’язаною з цим?
Ісмаїл

@iSid: Я вважаю, що він говорить про це goog.dom.DomHelper, але я особисто не бачу функції запиту, еквівалентної jQuery. @ Євген: Чи можете ви нам детальніше розповісти?
ексгума

@iSid: Цю функціональність надає goog.dom.query , який не задокументований, як і решта простору імен goog.dom.
bkirkbri

8

Я щойно опублікував досить вичерпну статтю про закриття Google, яка відповідає на це запитання у програмі insideRIA .

... Правило закриття! ^ _ ^


4
Приємне точне порівняння з jQuery: "[...] jQuery працює дуже добре і робить можливі великі речі без зусиль і швидко, тому" обіцянка "закриття - не пропонувати кращі алгоритми, а навпаки, дійсно кращі, організований і бездоганний спосіб розгортання програм JavaScript [...] Кодування в закритті означає продумати об'єктно-орієнтовані принципи на увазі, створити кілька js-файлів, кожен з яких представляє один клас, впорядкувати архітектуру додатків у пакети та нарешті розгорнути її за допомогою наданих інструментів , отримавши єдиний, стислий та безпечний файл JavaScript [...] "
Alex

7

Можливо, я не отримую jQuery, але я не бачив справжньої колекції віджетів інтерфейсу користувача там (є плагіни, так, але ви ніколи не знаєте, наскільки вони перевірені, і часто немає чіткого переможця та / або плагіна не вистачає документація).

Закриття має, серед іншого, колекцію віджетів (див. Вкладку демонстрації), включаючи, скажімо, зображення без кнопок, які використовуються в gmail.

Загалом, він має більше функціональних можливостей, реалізованих у рамках випуску. Це може не бути великою річчю, але я дратуюся морем плагінів jQuery, коли шукаю щось таке просте, як модуль історії ajax або автозаповнення.

Загалом це величезна бібліотека + набір інструментів, і я ознайомлюсь із нею просто, щоб знати, що є в наявності.


2
jqueryui.com - це офіційна колекція віджетів інтерфейсу користувача
Jourkey

1
да ну, судячи сайту має 6 віджетів: Акордеон Datepicker Dialog ProgressBar Slider Tabs
Nickolay

3
Я використовував jQueryUI і думав, що він дуже слабкий. Це навряд чи навіть знаходиться в розвитку. Коли востаннє додавали новий віджет Це може бути офіційна колекція віджетів, але всім, хто шукає віджет для використання з jQuery, краще просто погугнути для сторонніх віджетів jQuery.
Nosredna

2
jQueryUI - це не лише набір віджетів JavaScript, він також має чудову рамку css. Це було чудовим інструментом для мене в розробці сторінок CRUD / admin. Плюс багато з цих «віджетів» закриття - це 1-2 вкладиші в jQuery, навіть не варто писати плагін для.
Jace Rhea

2
Звернення JQuery - це не заздалегідь зроблені віджети. Це робить власні спеціальні віджети за короткий час. Я рідко торкаюся плагінів, включаючи інтерфейс користувача.
Ерік Відкритись

1

Я ціную більшість внесків Google у спільноту з відкритим кодом, і я впевнений, що в ньому є якісь цікаві речі, але загалом я вважаю, що закриття є об'ємним, перекрученим та неелегантним. Якщо ви повинні перетворити все на Java, я вважаю, що це прямо-таки пишно.

Редагувати:

Досить справедливо. Я насправді не порівнював. Закриття схоже на гігантський склад із усіма можливими інструментами, які, можливо, ви хочете, щоб вони знаходилися десь На зразок .NET або масивної бібліотеки Java. Як тільки ви знайдете те, що вам потрібно, ви зможете знайти дуже специфічні речі, які виконують дуже конкретні завдання. І тоді для виробництва можна видалити всю суровину.

З іншого боку, JQuery - це більш легко модифікована звукова викрутка.


1
Я хотів би дізнатися більше про версію Java Closing. У вас є посилання на це. Спасибі
Yazz.com

Знайдіть "іронічні мітки". Ви знайдете відповідь там.
Ерік Reppen

0

Бібліотека закриття Google дозволяє збирати та оптимізувати ваш JavaScript. Це не така бібліотека, як jQuery. jQuery - це те, що надає вам функції, які дозволяють швидше писати свій власний JavaScript.

Закриття Google допоможе вам мінімізувати свій власний код JavaScript, щоб забезпечити швидшу доставку через Інтернет.

Якщо коротко розповісти, закриття Google - це інструмент, а jQuery - бібліотека, схожа на Prototype.


6
Це не зовсім так. Google Closures також має власну бібліотеку, схожу на jQuery, яка забезпечує функції та утиліти для написання власного коду: code.google.com/closure/library/docs/tutorial.html
Wookai

2
Ну гаразд! Дякуємо, що виправили мене!
Терено

2
+1 За те, що намагаюся бути корисним :)
Andomar
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.