AngularJS

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск
AngularJS
AngularJS logo.svg
Тип

фреймворк, библиотека JavaScript, библиотека функций и язык программирования[1]

Разработчик

Brat Tech LLC, Google Inc. и сообщество

Написана на

JavaScript

Первый выпуск

2009

Последняя версия

1.6.4 (31.03.2017)

Состояние

Active

Лицензия

Лицензия MIT[2]

Сайт

angularjs.org[3]

Commons-logo.svg AngularJS на Викискладе

AngularJS — JavaScript-фреймворк с открытым исходным кодом. Предназначен для разработки одностраничных приложений[4]. Его цель — расширение браузерных приложений на основе MVC-шаблона, а также упрощение тестирования и разработки.

Фреймворк работает с HTML, содержащим дополнительные пользовательские атрибуты, которые описываются директивами, и связывает ввод или вывод области страницы с моделью, представляющей собой обычные переменные JavaScript. Значения этих переменных задаются вручную или извлекаются из статических или динамических JSON-данных.

История разработки[править | править вики-текст]

AngularJS разработан в 2009 году Мишко Хевери и Адамом Абронсом в Brat Tech LLC как программное обеспечение позади сервиса хранения JSON-данных, измеряющихся мегабайтами, для облегчения разработки корпоративных приложений. Сервис располагался на домене «GetAngular.com» и имел нескольких зарегистрированных пользователей, прежде чем они решили отказаться от идеи бизнеса и выпустить Angular как библиотеку с открытым исходным кодом.

Абронс покинул проект, но Хевери, работающий в Google, продолжает развивать и поддерживать библиотеку с другими сотрудниками Google Игорем Минаром и Войта Джином.

Философия Angular[править | править вики-текст]

AngularJS спроектирован с убеждением, что декларативное программирование лучше всего подходит для построения пользовательских интерфейсов и описания программных компонентов[5], в то время как императивное программирование отлично подходит для описания бизнес-логики[6]. Фреймворк адаптирует и расширяет традиционный HTML, чтобы обеспечить двустороннюю привязку данных для динамического контента, что позволяет автоматически синхронизировать модель и представление. В результате AngularJS уменьшает роль DOM-манипуляций и улучшает тестируемость.

Цели разработки[править | править вики-текст]

  • Отделение DOM-манипуляции от логики приложения, что улучшает тестируемость кода.
  • Отношение к тестированию как к важной части разработки. Сложность тестирования напрямую зависит от структурированности кода.[7][8]
  • Разделение клиентской и серверной стороны, что позволяет вести разработку параллельно.
  • Проведение разработчика через весь путь создания приложения: от проектирования пользовательского интерфейса, через написание бизнес-логики, к тестированию.

Angular придерживается MVC-шаблона проектирования и поощряет слабую связь между представлением, данными и логикой компонентов. Используя внедрение зависимости, Angular переносит на клиентскую сторону такие классические серверные службы, как видозависимые контроллеры. Следовательно, уменьшается нагрузка на сервер и веб-приложение становится легче.

Популярные встроенные Angular-директивы[править | править вики-текст]

С помощью директив AngularJS можно создавать пользовательские HTML-теги и атрибуты, чтобы добавить поведение некоторым элементам.[9]

ng-app
Объявляет элемент корневым для приложения.[10]
ng-bind
Автоматически заменяет текст HTML-элемента на значение переданного выражения.
ng-model
То же что и ng-bind, только обеспечивает двустороннее связывание данных.[11] Изменится содержимое элемента, ангуляр изменит и значение модели. Изменится значение модели, ангуляр изменит текст внутри элемента.
ng-class
Определяет классы для динамической загрузки.
ng-controller
Определяет JavaScript-контроллер для вычисления HTML-выражений в соответствии с MVC.[12]
ng-repeat
Создает экземпляр DOM для каждого элемента из коллекции.[13]
ng-show и ng-hide
Показывает или скрывает элемент в зависимости от значения логического выражения.
ng-switch
Создает экземпляр шаблона из множества вариантов, в зависимости от значения выражения.
ng-view
Базовая директива, отвечает за обработку маршрутов[14], которые принимают JSON перед отображением шаблонов, управляемых указанными контроллерами.
ng-if
Удаляет или создает часть DOM-дерева в зависимости от значения выражения. Если значение выражения, назначенного ngIf, равно false, элемент удаляется из DOM, иначе - вновь клонированный элемент вставляется в DOM.[15]

Также существует возможность создавать настраиваемые директивы, используя в том числе шаблоны в теге script.[16][17]

Двустороннее связывание данных[править | править вики-текст]

Двустороннее связывание данных в AngularJS является наиболее примечательной особенностью и уменьшает количество кода, освобождая сервер от работы с шаблонами. Вместо этого, шаблоны отображаются как обычный HTML, наполненный данными, содержащимися в области видимости, определенной в модели. Сервис $scope в Angular следит за изменениями в модели и изменяет раздел HTML-выражения в представлении через контроллер. Кроме того, любые изменения в представлении отражаются в модели. Это позволяет обойти необходимость манипулирования DOM и облегчает инициализацию и прототипирование веб-приложений[18].

Плагин для Chrome[править | править вики-текст]

В июле 2012 года команда Angular выпустила плагин для браузера Google Chrome под названием Batarang[19], который облегчает отладку веб-приложений, построенных на Angular. Расширение позволяет легко обнаруживать узкие места и предлагает графический интерфейс для отладки приложений[20].

Версии[править | править вики-текст]

В марте 2014 было объявлено о начале разработки AngularJS 2.0[21] и 15 сентября 2016 года объявлено[22] о выпуске финальной версии под названием Angular 2.

Последняя стабильная на данный момент версия AngularJS — 1.6.4, выпущенная в марте 2017 года. [23]

Сравнение с Backbone.js[править | править вики-текст]

Похожими возможностями обладает Backbone.jsJavaScript-библиотека, основанная на шаблоне проектирования Model-View-Presenter (MVP), предназначена для разработки веб-приложений с поддержкой RESTful JSON интерфейса. Backbone — очень лёгкая библиотека (упакованная и gzip-сжатая по величине ~6.3 Кб), но для работы необходима библиотека Underscore.js, а для поддержки REST API и работы с DOM элементами рекомендуется подключить jQuery-подобную библиотеку: jQuery или Zepto. Backbone.js создан Джереми Ашкенасом, который известен также как создатель CoffeeScript.

Однако, есть и существенные различия:

Связывание данных
Наиболее характерной особенностью, которая разделяет библиотеки, является способ синхронизации модели и представления. В то время как AngularJS поддерживает двустороннее связывание данных, Backbone.js чтобы связать модель и представление в значительной мере опирается на шаблонный код[24].
REST
Backbone.js хорошо поддерживает RESTful-бэкэнд. В AngularJS также очень легко работать с RESTful API при помощи сервиса $resource. В то же время в AngularJS есть более гибкий сервис $http, который подключается к удаленным серверам с помощью браузерного объекта XMLHttpRequest или через JSONP[25].
Шаблоны
В качестве шаблона AngularJS использует комбинацию настраиваемых HTML-тегов и выражений.[26] Backbone.js использует различные шаблонизаторы, такие как Underscore.js[24].

Примечания[править | править вики-текст]

  1. английская Википедия — 2001.
  2. https://github.com/angular/angular.js/blob/master/LICENSE
  3. https://api.github.com/repos/angular/angular.js
  4. Single Page Application using AngularJs. Tutorial
  5. Understanding Components
  6. What Is Angular?. Проверено 12 февраля 2013. Архивировано 20 мая 2013 года.
  7. Unit Testing
  8. E2E Testing
  9. Пишем простую директиву
  10. ngApp
  11. Data Binding
  12. https://docs.angularjs.org/api/ng/directive/ngController
  13. ngRepeat - directive in module ng
  14. Component Router
  15. ngIf Angular docs
  16. Учебник AngularJS: всеобъемлющее руководство. Часть 2. (Настраиваемые директивы).
  17. Шаблоны в директивах
  18. 5 Awesome AngularJS Features. Проверено 13 февраля 2013. Архивировано 20 мая 2013 года.
  19. Batarang homepage
  20. AngularJS: Introducing the AngularJS Batarang
  21. AngularJS 2.0
  22. Angular, version 2: proprioception-reinforcement. angularjs.blogspot.ru. Проверено 13 октября 2016.
  23. Перечень всех версий AngularJS и выпущенных в них изменений (англ.)
  24. 1 2 Backbonejs vs Angularjs: Demystifying the myths. Проверено 13 февраля 2013. Архивировано 20 мая 2013 года.
  25. Javascript Frameworks And Data Binding. Проверено 13 февраля 2013. Архивировано 20 мая 2013 года.
  26. script directive in module ng

Литература[править | править вики-текст]

  • Brad Green, Shyam Seshadri. AngularJS. — O'Reilly Media, 2013. — 196 p. — ISBN 978-1449344856.
  • Lukas Ruebbelke with Brian Ford. AngularJS in Action. — Manning Publications, 2015. — ISBN 9781617291333.

Ссылки[править | править вики-текст]