Jump to content

AngularJS

AngularJS
Оригинальный автор(ы) Форест Хевери
Разработчик(и) Google
Первоначальный выпуск 20 октября 2010 г .; 13 лет назад ( 20.10.2010 ) [1]
Стабильная версия
1.8.3 [2]  Отредактируйте это в Викиданных / 7 апреля 2022 г .; 2 года назад ( 7 апреля 2022 )
Репозиторий Репозиторий AngularJS
Написано в JavaScript
Платформа JavaScript-движок
Размер 167 КБ продукция
1,2 МБ разработки
Тип Веб-фреймворк
Лицензия МОЯ лицензия
Веб-сайт angularjs .org  Edit this on Wikidata

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 включали:

  • чтобы отделить манипуляции с DOM от логики приложения. На сложность этого существенно влияет способ структурирования кода.
  • отделить клиентскую часть приложения от серверной. Это позволяет работе по разработке развиваться параллельно и позволяет повторно использовать обе стороны.
  • обеспечить структуру процесса создания приложения: от проектирования пользовательского интерфейса через написание бизнес-логики до тестирования.

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

Область применения [ править ]

AngularJS использовал термин «область действия», аналогичный основам информатики.

Область действия определенная привязка в информатике описывает, когда в программе действительна . Спецификация ECMA -262 определяет область действия как: лексическую среду, в которой объект Function выполняется в веб-скриптах на стороне клиента; [9] аналогично тому, как определяется область видимости в лямбда-исчислении . [10]

Как часть архитектуры «MVC», область видимости образует «Модель», и все переменные, определенные в области видимости, доступны как из «Представления», так и из «Контроллера». Область действия ведет себя как связующее звено и связывает «Вид» и «Контроллер».

Бутстрап [ править ]

Задача, выполняемая загрузчиком AngularJS, выполнялась в три этапа. [11] после загрузки DOM:

  1. Создание нового инжектора
  2. Компиляция директив, украшающих DOM
  3. Связывание всех директив с областью действия

Директивы AngularJS позволяли разработчику указывать пользовательские и многократно используемые HTML-подобные элементы и атрибуты, которые определяют привязки данных и поведение компонентов представления. Некоторые из наиболее часто используемых директив:

ng-animate
Модуль обеспечивает поддержку JavaScript, переходов CSS3 и анимаций ключевых кадров CSS3 в рамках существующих основных и пользовательских директив.
ng-app
Объявляет корневой элемент приложения AngularJS, в котором можно использовать директивы для объявления привязок и определения поведения.
ng-aria
Модуль поддержки доступности общих атрибутов ARIA .
ng-bind
Устанавливает текст элемента DOM в значение выражения. Например, <span ng-bind="name"></span> отображает значение name внутри элемента span. Любое изменение переменной «имя» в области приложения мгновенно отражается в DOM.
ng-class
Условно применить класс в зависимости от значения логического выражения.
ng-controller
Указывает класс контроллера JavaScript, который оценивает выражения HTML.
ng-if
Базовая директива оператора if, которая создает экземпляр следующего элемента, если условия верны. Если условие ложно, элемент удаляется из DOM. Если это правда, клон скомпилированного элемента вставляется повторно.
ng-init
Вызывается один раз при инициализации элемента.
ng-model
Похоже на: ng-bind, но устанавливает двустороннюю привязку данных между представлением и областью.
ng-model-options
Обеспечивает настройку выполнения обновлений модели.
ng-repeat
Создайте экземпляр элемента один раз для каждого элемента коллекции.
ng-show & ng-hide
Условно показать или скрыть элемент, в зависимости от значения логического выражения. Отображение и скрытие достигается путем установки стиля отображения CSS.
ng-switch
Условно создайте экземпляр одного шаблона из набора вариантов в зависимости от значения выражения выбора.
ng-view
Базовая директива, отвечающая за обработку маршрутов. [12] которые разрешают JSON перед рендерингом шаблонов, управляемых указанными контроллерами.

С ng-* атрибуты недопустимы в спецификациях HTML, data-ng-* также может использоваться в качестве префикса. Например, оба ng-app и data-ng-app действительны в AngularJS.

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

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

$watch
— угловой метод, используемый для грязной проверки. Любая переменная или выражение, назначенное в $scope, автоматически устанавливает $watchExpression в angular. Поэтому присвоение переменной $scope или используя такие директивы, как ng-if, ng-show, ng-repeat и т. д. все автоматически создают часы в области angular. Angular поддерживает простой массив $$наблюдатели в $область объектов
Различные способы определения наблюдателя в AngularJS.
  • явно $смотреть атрибут $ область действия .
    $scope.$watch('person.username', validateUnique);
  • поместите интерполяцию в свой шаблон (для вас будет создан наблюдатель в текущей области $).
  • задайте такую ​​директиву, как ng-model, чтобы определить для вас наблюдателя.
    <input ng-model="person.username" />
$digest
— это угловой метод, который вызывается внутри angularjs через частые промежутки времени. В Метод $digest , angular перебирает все $watches в своей области/дочерних областях.
$apply
это угловой метод, который внутренне вызывает $ дайджест . Этот метод используется, когда вы хотите указать Angular вручную начать грязную проверку (выполнить все $часы )
$destroy
это одновременно метод и событие в angularjs. $destroy() удаляет область и все ее дочерние элементы из грязной проверки. Событие $destroy вызывается angular всякий раз, когда уничтожается $scope или $controller.

История развития [ править ]

AngularJS был первоначально разработан в 2009 году Мишко Хевери. [15] в ООО Брат Тех [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]

Angular и AngularDart [ править ]

Последующие версии AngularJS называются просто Angular . [22] Angular — это несовместимая TypeScript версия AngularJS на основе . 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 Universal [ править ]

Обычное приложение Angular выполняется в браузере, а Angular Universal генерирует статические страницы приложения на сервере посредством рендеринга на стороне сервера (SSR). [28]

Библиотеки [ править ]

Материал AngularJS [ править ]

Материал AngularJS [29] [30] — это библиотека компонентов пользовательского интерфейса , реализующая Material Design в AngularJS. [31] Библиотека предоставила набор повторно используемых, хорошо протестированных и доступных компонентов пользовательского интерфейса . В январе 2022 года библиотека была закрыта, о чем сообщается на ее официальном сайте. [32] Библиотека материалов AngularJS — это зрелый и стабильный продукт, готовый к использованию в производстве и работающий только с AngularJS 1.x. Библиотека Angular Material доступна в репозитории angular/material2 на GitHub .

Расширение Chrome [ править ]

В июле 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]

См. также [ править ]

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

  1. ^ «Релизы · angular/angular.js» . Гитхаб . Проверено 9 апреля 2021 г.
  2. ^ «Выпуск 1.8.3» . 7 апреля 2022 г. Проверено 29 июля 2022 г.
  3. ^ «АнгулярДжС» . docs.angularjs.org . Проверено 14 мая 2021 г.
  4. ^ Jump up to: Перейти обратно: а б «АнгулярДжС» . docs.angularjs.org . Проверено 9 апреля 2021 г.
  5. ^ Jump up to: Перейти обратно: а б Дарвин, Пит Бэкон (27 июля 2020 г.). «Стабильный AngularJS и долгосрочная поддержка» . Угловой блог . Проверено 9 апреля 2021 г.
  6. ^ Техсон, Марк (2 февраля 2021 г.). «В поисках пути вперед с помощью AngularJs» . Середина . Проверено 9 апреля 2021 г.
  7. ^ «Что такое угловой?» . Проверено 12 февраля 2013 г.
  8. ^ «АнгулярДжС» . docs.angularjs.org . Проверено 9 апреля 2021 г.
  9. ^ «Аннотированный ECMAScript 5.1, раздел 10.2 Лексические среды» . Проверено 3 января 2015 г.
  10. ^ Барендрегт, Хенк; Барендсен, Эрик (март 2000 г.), Введение в лямбда-исчисление (PDF)
  11. ^ «Написание директив» . angularjs.org. 28 ноября 2012 года . Проверено 21 июля 2013 г.
  12. ^ «АнгулярДжС» . docs.angularjs.org . Проверено 9 апреля 2021 г.
  13. ^ «5 замечательных функций AngularJS» . Проверено 13 февраля 2013 г.
  14. ^ Jump up to: Перейти обратно: а б Хевери, Миско. «Привязка данных в angularjs» . Проверено 9 марта 2014 г.
  15. ^ «Привет, мир, <angular/> здесь» . Проверено 12 октября 2014 г.
  16. ^ Jump up to: Перейти обратно: а б «Получить Ангуляр» . Angular / BRAT Tech. ООО. Архивировано из оригинала 13 апреля 2010 г. Проверено 12 октября 2014 г.
  17. ^ «AngularJS: Руководство разработчика для версии 1.5.8: Компоненты» . Проверено 26 сентября 2017 г.
  18. ^ "угловой.js" . Гитхаб . Проверено 26 сентября 2017 г.
  19. ^ «Выпуск v1.8.3 · angular/angular.js» . Гитхаб . Проверено 29 ноября 2023 г.
  20. ^ «Совместимость Internet Explorer» . Руководство разработчика Angular JS 1.7.7 . Проверено 12 февраля 2019 г. В AngularJS 1.3 прекращена поддержка IE8. Подробнее об этом читайте в нашем блоге. AngularJS 1.2 продолжит поддерживать IE8, но основная команда не планирует тратить время на решение проблем, характерных для IE8 или более ранних версий.
  21. ^ Минар, Игорь. «AngularJS 1.3: приближается новый релиз» . Блог AngularJS . Архивировано из оригинала 13 октября 2014 г. Проверено 12 октября 2014 г.
  22. ^ «Введение в Angular» . Проверено 8 декабря 2021 г.
  23. ^ «Хорошо… позвольте мне объяснить: это будет Angular 4.0» . angularjs.blogspot.kr . Архивировано из оригинала 13 декабря 2016 г. Проверено 14 декабря 2016 г.
  24. ^ Флюин, Стивен (26 апреля 2018 г.). «Доступна версия Angular 5.0.0» . Середина . Проверено 9 апреля 2021 г.
  25. ^ Крил, Пол (18 сентября 2017 г.). «Выпуск JavaScript-фреймворка AngularJS 5 задерживается» . Инфомир . Проверено 9 апреля 2021 г.
  26. ^ Флюин, Стивен (3 мая 2018 г.). «Версия 6 Angular уже доступна — блог Angular» . Угловой блог . Проверено 8 июня 2018 г.
  27. ^ «Версии и выпуски Angular» . angular.io . Проверено 8 июня 2018 г.
  28. ^ Пешак, Марк (7 января 2020 г.). «Глубокий обзор универсального и серверного рендеринга Angular» . Середина . Проверено 9 апреля 2021 г.
  29. ^ «угловой/материал (GitHub)» . Гитхаб . Проверено 24 декабря 2020 г.
  30. ^ «Документация по материалам AngularJS» . Проверено 24 декабря 2020 г.
  31. ^ Котару, В. Кирти (25 августа 2016 г.). Реализация Material Design с помощью AngularJS: платформа компонентов пользовательского интерфейса . Апресс. п. 4. ISBN  9781484221907 .
  32. ^ «Материал AngularJS» . материал.angularjs.org . Проверено 4 мая 2022 г.
  33. ^ «angular/angularjs-batarang (GitHub)» . Гитхаб . Проверено 12 октября 2014 г.
  34. ^ Форд, Брайан. «Представляем AngularJS Бэтаранг» . Блог AngularJS . Архивировано из оригинала 13 октября 2014 г. Проверено 12 октября 2014 г.
  35. ^ «Расширение batarang Chrome для AngularJS кажется неработающим» .

Дальнейшее чтение [ править ]

Внешние ссылки [ править ]

Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 8ec4c8cf406eb9c79509193fc3f71908__1716464400
URL1:https://arc.ask3.ru/arc/aa/8e/08/8ec4c8cf406eb9c79509193fc3f71908.html
Заголовок, (Title) документа по адресу, URL1:
AngularJS - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)