Подтвердить что ты не робот

Как Angular JS относится к Google Closure?

Теперь, когда выпущен AngularJS 1.0 Мне интересно, как этот проект сочетается с другим JavaScript общего назначения framework/tool от Google, Закрытие.

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

  • Закрытие - это набор технологий, которые можно использовать отдельно. Я считаю, что наиболее привлекательным является то, что я считаю:
    • Closure Compiler, который, как представляется, "исправит JavaScript" в том смысле, что он предупреждает о типичных проблемах, предоставляет некоторые проверки времени компиляции (не все такие люди, но, вероятно, большинство разработчиков Google, и я тоже). И, конечно, приятно, что полученный код меньше и эффективнее.
    • Затем есть некоторые части Closure Library, которые мне нравятся, например. абстракции над встроенными типами (ArrayLike и т.д.), система на основе классов, механизм событий, абстракции DOM и т.д. Я еще не уверен, если мне нравится библиотека графического интерфейса или нет (кажется, довольно сложная и я не " у меня действительно есть время изучить его еще).
    • Тогда есть некоторые функции, которые я не думаю, что найду это полезным, например. Шаблоны.
  • AngularJS, о котором я только кратко рассказывал, кажется, намного выше, чем Closure. Представляет собой инфраструктуру приложения, предоставляющую такие функции, как привязка данных, многоразовые компоненты, структура MVC и т.д.

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

4b9b3361

Ответ 1

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

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

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

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

Итак, чтобы подвести итог, Google Closure - это huuuuge beast, и AngularJS может заменить часть goog.ui в Google Closure Library.

Ответ 2

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