Как Angular JS связан с Google Closure?

Теперь, когда AngularJS 1.0 выпущен Мне интересно, как этот проект сочетается с другим универсальным JavaScript-фреймворком/инструментом от Google, Closure.

Я видел только базовое описание этих двух технологий (и прочитал около половины книги о Closure), поэтому у меня нет прямого опыта, но вот как это выглядит для меня:

  • Closure is a set of technologies that can be used separately. What I find probably the most appealing is:
    • Closure Compiler which seems to "fix JavaScript" in a sense that it warns against typical issues, provides some compile-time checks (not all people like this but probably most Google developers do, and I do too). And of course it's nice that the resulting code is smaller and more efficient.
    • Кроме того, есть некоторые части Closure Library, которые мне нравятся, например. абстракции над встроенными типами (ArrayLike и т. д.), система на основе классов, механизм обработки событий, абстракции DOM и т. д. Я еще не уверен, нравится мне библиотека GUI или нет (кажется, довольно сложная, и я действительно не еще есть время изучить).
    • Затем есть некоторые функции, которые я не думаю, что нашел бы полезными, например. Шаблоны.
  • AngularJS, о котором я лишь вкратце читал, похоже, гораздо более высокого уровня, чем Closure. Похоже, что это прикладная среда, предоставляющая такие функции, как привязка данных, повторно используемые компоненты, структура MVC и т. д.

Итак, эти две технологии, кажется, нацелены на совершенно другой уровень абстракции, поэтому моей первой мыслью было, можно ли их использовать вместе? Закрытие, предоставляющее низкоуровневые абстракции компилятора и браузера, в то время как Angular предоставляет услуги и структуру уровня приложения? Будет ли это иметь смысл и будет ли это хорошо работать вместе?


person Borek Bernard    schedule 15.06.2012    source источник
comment
stackoverflow.com/questions/11032092/   -  person Vojta    schedule 15.06.2012


Ответы (2)


Единственный известный мне проект Google, который использует AngularJS, — это команда DoubleClick. (презентация) По сути, они по-прежнему используют Google Closure Library для всего, кроме создания пользовательского интерфейса. Также обратите внимание, что они используют компилятор закрытия Google, но это почти само собой разумеющееся, «никто» не использует только библиотеку без компилятора.

Google Closure Library поставляется с фреймворком пользовательского интерфейса в пространстве имен goog.ui. Этот фреймворк почти во всех отношениях сравнивается с не-веб-фреймворками пользовательского интерфейса, такими как Android, iOS, Swing и QT. У них есть вещь, которую я люблю называть элементами DOM на стероидах, goog.ui.Component, которая имеет множество замечательных механизмов жизненного цикла для сбора мусора, прослушивания событий и многого другого. У вас есть такие вещи, как goog.ui.Control, который является подклассом goog.ui.Component и очень интересным образом обрабатывает взаимодействие с пользователем. Например, он позволяет подключать средства визуализации, поэтому вы можете изменить <button> на <a>, не изменяя никакой другой логики, кроме фактического рендеринга.

Говоря о классах и подклассах, Google Closure Library также имеет это. Вам не нужно использовать встроенный, важная часть заключается в том, что вы каким-то образом вызываете прототип «суперкласса» в своих методах. Вы можете, например, использовать систему классов в CoffeeScript, библиотеке Google Closure все равно.

Причина, по которой команда DoubleClick выбрала AngularJS, заключалась очевидно в основном из-за функций привязки данных. AngularJS предоставляет. В Google Closure Library нет ничего встроенного для автоматического обновления пользовательского интерфейса при изменении данных.

Подводя итог, Google Closure — это огромный зверь, и AngularJS может заменить goog.ui часть библиотеки Google Closure.

person August Lilleaas    schedule 25.12.2012
comment
Я думаю, что это большой плюс для Angular, бесплатной двусторонней привязки модели/интерфейса. Гэри Бернхардт рассказывает о том, насколько хорошо спроектирована система Closure. - person Steven Almeroth; 01.07.2014
comment
Просто обновление. Я обнаружил, что проект Google Blockly также использует Angular 2.0 github.com/google/blockly/ дерево/основной/доступный - person Guillaume Malartre; 11.04.2017

Я думаю, что AngularJS больше похож на надежную структуру MVC/MVVM, а библиотека Closure — это набор отдельных компонентов, хотя оба Шаблоны AngularJS и шаблоны закрытия имеют много общего.

person niutech    schedule 04.12.2012