AngularJS — это прекращенная бесплатная веб-платформа на основе JavaScript с открытым исходным кодом для разработки одностраничных приложений . Его поддерживали в основном Google и сообщество частных лиц и корпораций. Он был направлен на упрощение разработки и тестирования таких приложений путем предоставления основы для клиентских архитектур модель-представление-контроллер (MVC) и модель-представление-модель представления (MVVM), а также компоненты, обычно используемые в веб-приложениях и прогрессивных приложениях . веб-приложения .
AngularJS использовался в качестве внешнего интерфейса стека MEAN , который состоял из базы данных MongoDB , инфраструктуры сервера веб-приложений Express.js , самого AngularJS (или Angular ) и среды выполнения сервера Node.js.
С 1 января 2022 г. Google больше не обновляет AngularJS для устранения проблем с безопасностью, совместимостью браузеров или jQuery . [3] [4] [5] Команда Angular рекомендует перейти на Angular (v2+) как лучший путь вперед, но они также предоставили некоторые другие варианты. [6]
Платформа AngularJS работала, сначала читая страницу языка гипертекстовой разметки (HTML), в которую были встроены дополнительные пользовательские атрибуты HTML . Angular интерпретировал эти атрибуты как директивы для привязки входных или выходных частей страницы к модели, представленной стандартными переменными JavaScript . Значения этих переменных JavaScript можно задавать вручную в коде или получать из статических или динамических ресурсов JSON .
AngularJS был построен на убеждении, что декларативное программирование следует использовать для создания пользовательских интерфейсов и соединения программных компонентов , тогда как императивное программирование лучше подходит для определения бизнес-логики приложения . [7] Фреймворк адаптировал и расширил традиционный HTML для представления динамического контента посредством двусторонней привязки данных, что позволило автоматически синхронизировать модели и представления. В результате AngularJS уменьшил акцент на явном манипулировании объектной моделью документа (DOM) с целью улучшения тестируемости и производительности.
Цели разработки AngularJS включали:
AngularJS реализовал шаблон MVC для разделения компонентов представления, данных и логики. [8] Используя внедрение зависимостей , Angular перенес традиционные серверные сервисы, такие как контроллеры, зависящие от представления, в клиентские веб-приложения. Следовательно, большая часть нагрузки на сервер может быть уменьшена.
AngularJS использовал термин «область действия», аналогичный основам информатики.
Область действия в информатике описывает, когда в программе действительна определенная привязка . Спецификация ECMA-262 определяет область действия как: лексическую среду, в которой объект Function выполняется в веб-скриптах на стороне клиента; [9] аналогично тому, как определяется область видимости в лямбда-исчислении . [10]
Как часть архитектуры «MVC», область видимости образует «Модель», и все переменные, определенные в области видимости, доступны как из «Представления», так и из «Контроллера». Область действия ведет себя как связующее звено и связывает «Вид» и «Контроллер».
Задача, выполняемая загрузчиком AngularJS , выполнялась в три этапа [11] после загрузки DOM:
Директивы AngularJS позволяли разработчику указывать пользовательские и повторно используемые HTML-подобные элементы и атрибуты, которые определяют привязки данных и поведение компонентов представления. Некоторые из наиболее часто используемых директив:
ng-animate
Поскольку ng-*
атрибуты недопустимы в спецификациях HTML, их data-ng-*
также можно использовать в качестве префикса. Например, оба ng-app
и data-ng-app
действительны в AngularJS.
ng-app
ng-aria
ng-bind
<span ng-bind="name"></span>
отображает значение name внутри элемента span. Любое изменение переменной «имя» в области приложения мгновенно отражается в DOM.ng-class
ng-controller
ng-if
ng-init
ng-model
ng-bind
, но устанавливает двустороннюю привязку данных между представлением и областью действия.ng-model-options
ng-repeat
ng-show
&ng-hide
ng-switch
ng-view
Двусторонняя привязка данных AngularJS имела свою наиболее примечательную особенность, которая в значительной степени освобождала серверную часть от обязанностей по шаблонированию. Вместо этого шаблоны отображались в простом HTML в соответствии с данными, содержащимися в области, определенной в модели. Служба $scope
Angular обнаружила изменения в разделе модели и измененные HTML-выражения в представлении через контроллер. Аналогично, любые изменения вида отражались в модели. Это избавило от необходимости активно манипулировать DOM и способствовало начальной загрузке и быстрому созданию прототипов веб-приложений. [13]
AngularJS обнаруживал изменения в моделях путем сравнения текущих значений со значениями, сохраненными ранее в процессе грязной проверки, в отличие от Ember.js и Backbone.js , которые запускали прослушиватели при изменении значений модели. [14]
$watch
$scope.$watch('person.username', validateUnique);
<input ng-model="person.username" />
$digest
$apply
$destroy
AngularJS был первоначально разработан в 2009 году Мишко Хевери [15] в Brat Tech LLC [16] как программное обеспечение для онлайн- сервиса хранения JSON , стоимость которого оценивалась бы в мегабайт, для простых в создании приложений для предприятий. Это предприятие располагалось на веб-домене GetAngular.com [16] и имело несколько подписчиков, прежде чем они решили отказаться от бизнес-идеи и выпустить Angular как библиотеку с открытым исходным кодом.
В версии 1.6 к AngularJS добавлены многие концепции Angular , включая концепцию компонентной архитектуры приложений. [17] В этом выпуске, среди прочего, была удалена песочница, которая, по мнению многих разработчиков, обеспечивала дополнительную безопасность, несмотря на многочисленные обнаруженные уязвимости, обходящие песочницу. [18] Текущая (по состоянию на ноябрь 2023 г.) стабильная версия AngularJS — 1.8.3 [19]
В январе 2018 года был объявлен график поэтапного вывода AngularJS: после выпуска 1.7.0 активная разработка AngularJS продолжится до 30 июня 2018 года. После этого версия 1.7 поддерживалась до 31 декабря 2021 года в качестве долгосрочной поддержки . [4] [5]
Версии AngularJS 1.3 и более поздние не поддерживали Internet Explorer 8 или более ранние версии. Хотя AngularJS 1.2 поддерживает IE8, его команда этого не делает. [20] [21]
Последующие версии AngularJS называются просто Angular . [22] Angular — это несовместимая версия AngularJS на основе TypeScript . Angular 4 был анонсирован 13 декабря 2016 года, цифра 3 была пропущена, чтобы избежать путаницы из-за несовпадения версии пакета маршрутизатора, которая уже распространялась как v3.3.0. [23]
AngularDart работает на Dart — объектно-ориентированном , определяемом классом языке программирования с единым наследованием , использующим синтаксис стиля C , который отличается от Angular JS (который использует JavaScript ) и Angular 2/Angular 4 (который использует TypeScript ). Angular 4 выпущен в марте 2017 года, при этом версия платформы соответствует номеру версии используемого маршрутизатора. Angular 5 был выпущен 1 ноября 2017 года. [24] Ключевые улучшения в Angular 5 включают поддержку прогрессивных веб-приложений, оптимизатор сборки и улучшения, связанные с Material Design. [25] Angular 6 был выпущен 3 мая 2018 г., [26] Angular 7 был выпущен 18 октября 2018 г., а Angular 8 был выпущен 28 мая 2019 г. Angular соответствует стандартам семантического управления версиями, причем каждый основной номер версии указывает на потенциально критические изменения. . Angular обязался предоставить 6 месяцев активной поддержки для каждой основной версии, а затем 12 месяцев долгосрочной поддержки. Основные выпуски выходят раз в два года, на каждый основной выпуск приходится от 1 до 3 второстепенных выпусков. [27]
Обычное приложение Angular выполняется в браузере, а Angular Universal генерирует статические страницы приложения на сервере посредством рендеринга на стороне сервера (SSR). [28]
AngularJS Material [29] [30] — это библиотека компонентов пользовательского интерфейса , реализующая дизайн материалов в AngularJS. [31] Библиотека предоставила набор повторно используемых, хорошо протестированных и доступных компонентов пользовательского интерфейса . В январе 2022 года библиотека была закрыта, о чем сообщается на ее официальном сайте. [32] Библиотека материалов AngularJS — это зрелый и стабильный продукт, готовый к промышленному использованию и работающий только с AngularJS 1.x. Библиотека материалов Angular доступна в репозитории angular/material2 GitHub.
В июле 2012 года команда Angular создала расширение для браузера Google Chrome под названием Batarang [33] , которое улучшило процесс отладки веб-приложений, созданных с помощью Angular. Расширение было призвано облегчить обнаружение узких мест в производительности и предлагало графический интерфейс для отладки приложений. [34] Какое-то время в конце 2014 — начале 2015 года расширение не было совместимо с недавними выпусками (после версии 1.2.x) Angular. [35] Последнее обновление этого расширения было 4 апреля 2017 г.
AngularJS установил парадигму цикла дайджеста . Этот цикл можно рассматривать как цикл, во время которого AngularJS проверяет, были ли какие-либо изменения во всех переменных, за которыми наблюдают все файлы $scopes
. Если $scope.myVar
она определена в контроллере и эта переменная помечена для наблюдения, Angular будет отслеживать изменения в myVar на каждой итерации цикла.
Этот подход потенциально приводил к медленному рендерингу, когда AngularJS проверял слишком много переменных в $scope
каждом цикле. Мишко Хевери предложил держать на каждой странице менее 2000 зрителей. [14]
В AngularJS 1.3 прекращена поддержка IE8.
Подробнее об этом читайте в нашем блоге.
AngularJS 1.2 продолжит поддерживать IE8, но основная команда не планирует тратить время на решение проблем, характерных для IE8 или более ранних версий.