Что предлагает библиотека Google Closure по сравнению с jQuery? [закрыто]

190

принимая во внимание

  • бизнес фон
  • поддержка сообщества
  • доступные расширения
  • набор функций по умолчанию
  • простота использования
  • и надежность

почему вы предпочитаете один другому?

pestaa
источник
1
Я думаю, что будет трудно сказать, почему один из них предпочтительнее другого, пока люди не начнут экспериментировать с приложениями и не увидят, каковы границы закрытия.
Джеймс Блэк
3
Некоторые синтаксические сравнения здесь: derekslager.com/blog/posts/2010/06/...
user194743
4
Эта статья также может помочь с решением. Ключевой урок: «Закрытие - это экосистема. Это не похоже на jQuery, где вы просто используете его здесь и там, чтобы облегчить доступ к DOM или манипулирование им. Если вы хотите по-настоящему использовать Closure, вы должны взять на себя обязательство по-настоящему использовать его ».
Дан Абрамов
2019 Что такое закрытие Google? : D
evilReiko

Ответы:

176

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

Больше чем другая библиотека JS

Насколько я понимаю, Google Closure - это не только еще одна библиотека JS, но также набор инструментов, которые позволят вам оптимизировать код JS. Работа с jQuery дает хорошие инструменты и легковесную библиотеку, но она не уменьшает ваш собственный код. Компилятор Закрытие будет. Закрытие инспектор может также быть полезным, так как иногда уменьшенный код имеет различное поведение , чем оригинальный, и боль для отладки. Он интегрируется с Firebug и поддерживает юнит-тесты, которые на сегодняшний день являются лучшими друзьями разработчиков.

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

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

Характеристики

Тем не менее, возможности Closure выглядят достойно, и его модульная архитектура также является многообещающей. Я полагаю, что Google давно использует его для внутреннего использования, а это значит, что вы можете ожидать, что все основные функции (и даже больше) будут реализованы, и, вероятно, очень оптимизированным и масштабируемым образом. Они пытаются представить его как STL JavaScript, поэтому им следовало бы его отточить.

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

Он поставляется с функциями шаблонов, которые интегрируются с Java (кто сказал GWT ?), Так что это также может быть еще одним плюсом для Closure.

Простота использования

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

РЕДАКТИРОВАТЬ: в соответствии с просьбой, позвольте мне сказать несколько слов о GWT ссылки. Google Web Toolkit - это библиотека Java, которая позволяет создавать веб-интерфейсы с поддержкой AJAX и генерирует (и оптимизирует) необходимый код JavaScript. Поскольку Google Closure позволяет создавать шаблоны, которые могут использоваться как на стороне клиента, так и на стороне сервера (с использованием JavaScript и Java), я предполагаю, что вскоре станет возможным использовать их совместно (если это еще не так).

Wookai
источник
5
Подробный и содержательный ответ, спасибо. Не могли бы вы объяснить, что означает эта ссылка на GWT? Боюсь, я этого не понял.
Pestaa
1
Я думаю, вы также должны упомянуть библиотеку шаблонов (Soy) в разделе «Больше, чем». Один и тот же файл шаблона может использоваться как на стороне сервера (Java), так и на стороне клиента. Действительно хорошая реализация IMO. Это означает, что мы можем просто отправлять JSON в AJAX-запросах, а не отправлять HTML - это экономит полосу пропускания.
Фрэнк Крюгер
1
Я только что обнаружил критику против Closure, но, возможно, это просто FUD: sitepoint.com/blogs/2009/11/12/…
nalply
7
Критика не FUD, и спасибо за ссылку. Критика сосредоточена на том, что код JavaScript не везде оптимален. Это может быть допустимым, но оно пропускает большую точку. Насколько я понимаю, Closure предназначается для действительно сложных приложений JS (в масштабе GMail), и это имеет некоторые последствия - например, не каждая строка является оптимальной, поскольку все написано не одним блестящим кодером. Но, наоборот, он может масштабироваться как среда разработки программного обеспечения.
Питер С Магнуссон
3
@nalpy Как указывалось в комментариях, в этой статье не упоминалось, что библиотека содержит COMPILER (не минификатор), который может оптимизировать эти проблемы кодирования.
Муравей
30

В моем кратком обзоре API я нахожу различия между jQuery и Closure.

jQuery - это просто упрощенный способ выполнения многих частых операций в кросс-браузерном режиме.

Closure - это очень новая структура, которая, например, обеспечивает кросс-браузерный способ использования <canvas>тега и добавляет новые события.

Итак, это добавление к тому, что мы обычно делаем с javascript, они берут много операций, которые люди хотят сделать, и помещают их в API.

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

У них есть функции javascript, которые используют такие инструменты, как Google Gears, что продолжается тем, что они расширили то, что можно сделать с помощью Javascript.

Мне понадобится несколько дней, чтобы переварить все изменения, но я вижу, что это может оказать большое влияние на веб-приложения, которые могут быть разработаны.

Джеймс Блэк
источник
25

Самым большим преимуществом Closure Library является то, что он предназначен для Closure Compiler. Это открывает совершенно новые возможности для разработки JavaScript ...

Компилятор имеет несколько интересных функций:

  • Он компилирует читаемый JavaScript в сжатый машиночитаемый JavaScript - он имеет наилучшую степень сжатия в режиме «ADVANCED».
  • Важное значение имеет документирование кода с помощью тегов JSDoc: компилятор читает его, и вы получаете предупреждения во время компиляции для опечаток в документации, неправильного использования @constructor, неправильного типа переменной , неправильного использования поля, аннотированного @private и @protected, и т.п.
  • Если вы пишете многократно используемую библиотеку JavaScript, такую ​​как OpenLayers или Google Maps, вы официально экспортируете свой публичный API - и компилятор оптимизирует ваш внутренний код.
  • Конечные приложения могут быть скомпилированы вместе с библиотекой, а затем неиспользуемые части библиотеки удалены из созданного кода. Зависимости решаются автоматически компилятором.
  • Компилятор принимает константы для удаления нежелательных функций - это позволяет выполнять компиляцию только для определенного браузера, такого как Mobile WebKit, только для одного из режимов Quirks или Strict, компиляции без поддержки IE6 и т. Д.
  • Отладка с помощью FireBug возможна даже для скомпилированной версии исходного кода.
  • Компилятор поддерживает генерацию динамически загружаемых модулей, что может значительно ускорить загрузку конечного приложения, поскольку код для расширенной функциональности можно загружать только тогда, когда это требуется.

Для получения дополнительной информации посмотрите на: http://blog.klokantech.com/2010/12/closure-compiler-for-openlayers-3x.html

Петр Придаль
источник
20

Изменить : посмотрите это видео на YouTube, оно может лучше ответить на некоторые вопросы о Google Closure.

Вероятно, лучшими источниками информации о закрытии Google являются дискуссионная группа проекта , вики, страницы документов, демоверсии и еще не законченная книга Майкла Болина, которая теперь доступна на сайте книг по сафари.

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

closureПо словам Михаэля Болина, библиотека в этом отношении больше похожа, dojoчем jQueryнекоторые, и некоторые понятия были заимствованы dojo.

Компилятор Google Closure использует 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.Не могли бы вы дать мне ссылку на какую-нибудь документацию, связанную с этим?
IsmailS
@iSid: я думаю, что он говорит goog.dom.DomHelper, но я лично не вижу функцию запроса, эквивалентную jQuery. @ Евгений: Можете ли вы дать нам более подробную информацию?
exhuma
@iSid: эта функциональность обеспечивается goog.dom.query , который не задокументирован, как и остальная часть пространства имен goog.dom.
bkirkbri
8

Я только что опубликовал довольно исчерпывающую статью о Google Closure, которая отвечает на этот вопрос на InsideRIA .

... закрытие рулез! ^ _ ^

Давиде Дзанотти
источник
4
Хорошее точное сравнение с jQuery: «[...] jQuery работает очень хорошо и делает возможным большие вещи без усилий и быстроты, поэтому« обещание »Closure не в том, чтобы предлагать лучшие алгоритмы, а скорее действительно лучше, организованный и поддерживаемый способ развертывания приложений JavaScript [...] Кодирование в Closure означает мышление с учетом объектно-ориентированных принципов, создание нескольких js-файлов, каждый из которых представляет отдельный класс, организацию архитектуры приложения в пакеты и, наконец, развертывание ее с использованием предоставленных инструментов , получив один сжатый и безопасный файл JavaScript [...] "
Alex
7

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

Closure имеет, помимо прочего, коллекцию виджетов (см. Вкладку "Демо"), в том числе, например, кнопки без изображений, используемые в gmail.

В более общем смысле, он имеет больше функциональности, реализованной как часть релиза. Возможно, это не так уж и важно, но меня раздражает море плагинов jQuery, когда я ищу что-то такое простое, как модуль истории ajax или автозаполнение.

В целом, это огромная библиотека + набор инструментов, и я буду знакомиться с ней, просто чтобы узнать, что доступно.

Nickolay
источник
2
jqueryui.com - официальная коллекция виджетов пользовательского интерфейса
Jourkey
1
да хорошо, судя по сайту, на нем есть 6 виджетов: Аккордеонный Datepicker, диалог Progressbar Slider Tabs
Николай
3
Я использовал jQueryUI и подумал, что он очень слабый. Вряд ли даже кажется, что в разработке. Когда в последний раз был добавлен новый виджет. Это может быть официальная коллекция виджетов, но любому, кто ищет виджет для использования с jQuery, лучше просто поискать сторонние виджеты jQuery.
Носредна
2
jQueryUI - это не просто набор виджетов javascript, но и отличная CSS-среда. Это был отличный инструмент для меня в стилизации CRUD / административных страниц. Плюс ко многим из этих «виджетов» Closure - 1-2 лайнера в jQuery, даже не стоит писать плагин для них.
Джейс Рея
2
Привлекательность JQuery заключается не в готовых виджетах. Это делает ваши собственные виджеты в рекордно короткие сроки. Я редко прикасаюсь к плагинам, включая пользовательский интерфейс.
Эрик Реппен
1

Я ценю большую часть вклада Google в сообщество разработчиков ПО с открытым исходным кодом, и я уверен, что у него есть кое-что классное, но в целом я считаю Closure громоздким, перегруженным и не элегантным. Если вам нужно все превратить в Java, я полагаю, что это просто элегантно.

Редактировать:

Справедливо. Я действительно не сравнивал. Закрытие похоже на гигантский склад со всеми возможными инструментами, которые вы могли бы захотеть найти ... где-то. Вроде как .NET или массивная библиотека Java. Как только вы найдете то, что вам нужно, вы можете найти очень специфические вещи, которые выполняют очень специфические работы. И тогда для производства вы можете убрать всю грязь.

JQuery, с другой стороны, является более легко модифицируемой звуковой отверткой.

Эрик Реппен
источник
1
Я хотел бы узнать больше о Java-версии Closure. У вас есть ссылка для этого. Спасибо
appshare.co
Посмотрите на «иронические метки». Вы найдете ответ там.
Эрик Реппен
0

Библиотека Google Closure позволяет компилировать и оптимизировать ваш JavaScript. Это не библиотека, как jQuery. jQuery - это то, что предоставляет вам функции, которые позволяют быстрее писать свой собственный javascript.

Google Closure поможет вам свести к минимуму ваш собственный код JavaScript, чтобы обеспечить более быструю доставку через Интернет.

Короче говоря, Google Closure - это инструмент, а jQuery - это библиотека, похожая на Prototype.

Tereno
источник
6
Это не совсем так. Google Closures также поставляется с собственной библиотекой, похожей на jQuery и предоставляющей функции и утилиты для написания собственного кода: code.google.com/closure/library/docs/tutorial.html
Wookai
2
Ах хорошо! Спасибо, что поправили меня!
Терено
2
+1 За попытку быть полезным :)
Andomar