AngularJS

Материал из Википедии — свободной энциклопедии
Перейти к навигацииПерейти к поиску
Эта статья — об Angular 1.x. Об Angular 2+ см. Angular (фреймворк).
AngularJS
Логотип программы AngularJS
Типфреймворк, библиотека JavaScript и библиотека функций
РазработчикGoogle
Написана наJavaScript[1]
Дата выпуска20 октября2010
Аппаратная платформаWeb-платформа
Последняя версия
Репозиторийgithub.com/angular/angul…
Лицензиялицензия MIT[4][5]
Сайтangularjs.org (англ.)
Логотип Викисклада Медиафайлы на Викискладе

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

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

Содержание

История разработки

[править |править код]

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

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

В марте 2014 было объявлено о начале разработки AngularJS 2.0[7]. Новая версия писалась с нуля наTypeScript и очень сильно отличалась от предыдущей, поэтому позже было решено развивать её как отдельный фреймворк с названиемAngular. Angular 2 был выпущен 15 сентября 2016 года[8], тогда как первая версия продолжила развиваться отдельно как AngularJS.

В апреле 2022 с выпуском последней версии 1.8.3 поддержка AngularJS была официально прекращена.[9]

Философия Angular

[править |править код]

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

Цели разработки

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

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

Популярные встроенные Angular-директивы

[править |править код]

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

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

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

Двустороннее связывание данных

[править |править код]

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

Плагин для Chrome

[править |править код]

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

Сравнение с Backbone.js

[править |править код]

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

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

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

См. также

[править |править код]

Примечания

[править |править код]
  1. The angularjs Open Source Project on Open Hub: Languages Page — 2006.
  2. Release 1.8.3 — 2022.
  3. 1.8.3 ultimate-farewell (2022-04-07)
  4. angular.js/LICENSE at master · angular/angular.js · GitHub
  5. The angularjs Open Source Project on Open Hub: Licenses Page — 2006.
  6. Single Page Application using AngularJs. Tutorial . Дата обращения: 6 ноября 2016. Архивировано 7 ноября 2016 года.
  7. AngularJS 2.0 . Дата обращения: 14 августа 2015. Архивировано 25 августа 2015 года.
  8. Angular, version 2: proprioception-reinforcement . angularjs.blogspot.ru. Дата обращения: 13 октября 2016. Архивировано 12 октября 2016 года.
  9. angular (англ.). npm. Дата обращения: 22 октября 2022. Архивировано 22 октября 2022 года.
  10. Understanding Components . Дата обращения: 20 октября 2016. Архивировано 20 октября 2016 года.
  11. What Is Angular?  Дата обращения: 12 февраля 2013. Архивировано 20 мая 2013 года.
  12. Unit Testing . Дата обращения: 20 октября 2016. Архивировано 17 октября 2016 года.
  13. E2E Testing . Дата обращения: 20 октября 2016. Архивировано 12 апреля 2017 года.
  14. Пишем простую директиву
  15. ngApp . Дата обращения: 6 ноября 2016. Архивировано 22 октября 2016 года.
  16. Data Binding . Дата обращения: 6 ноября 2016. Архивировано 3 января 2015 года.
  17. Архивированная копия . Дата обращения: 6 ноября 2016. Архивировано 20 октября 2016 года.
  18. ngRepeat — directive in module ng . Дата обращения: 6 ноября 2016. Архивировано 20 октября 2016 года.
  19. Component Router . Дата обращения: 20 октября 2016. Архивировано 21 октября 2016 года.
  20. ngIf Angular docs . Дата обращения: 6 ноября 2016. Архивировано 20 октября 2016 года.
  21. Учебник AngularJS: всеобъемлющее руководство. Часть 2. (Настраиваемые директивы).  Дата обращения: 27 ноября 2016. Архивировано 28 ноября 2016 года.
  22. Шаблоны в директивах
  23. 5 Awesome AngularJS Features . Дата обращения: 13 февраля 2013. Архивировано 20 мая 2013 года.
  24. Batarang homepage . Дата обращения: 12 мая 2013. Архивировано 10 февраля 2015 года.
  25. AngularJS: Introducing the AngularJS Batarang . Дата обращения: 12 мая 2013. Архивировано 2 февраля 2018 года.
  26. 12Backbonejs vs Angularjs: Demystifying the myths . Дата обращения: 13 февраля 2013. Архивировано изоригинала 20 мая 2013 года.
  27. Javascript Frameworks And Data Binding . Дата обращения: 13 февраля 2013. Архивировано изоригинала 20 мая 2013 года.
  28. script directive in module ng . Дата обращения: 27 ноября 2016. Архивировано 27 ноября 2016 года.

Литература

[править |править код]

Ссылки

[править |править код]
Перейти к шаблону «JavaScript»
Идеи
Компиляторы
Движки
Библиотеки
ифреймворки
Редакторы
Инструменты
Связанные
технологии
Люди
Перейти к шаблону «ECMAScript»
Диалекты
Движки[англ.]
(сравнение[англ.])
Фреймворки,
библиотеки
JavaScript
(сравнение[англ.])
Client-side
Server-side
Библиотеки
(список[англ.])
ActionScript
Множественные
реализации
Люди
Другое
Перейти к шаблону «Свободное и открытое программное обеспечение Google»
Свободное и открытое программное обеспечениеGoogle
Программное обеспечение
Приложения
Языки программирования
Фреймворки и
инструменты разработки
Операционные системы
Связанное
Источник —https://ru.wikipedia.org/w/index.php?title=AngularJS&oldid=146521736
Категории:
Скрытые категории: