AngularJS

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), предназначена для разработки веб-приложений с поддержкой RESTful JSON интерфейса. 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. 1 2 Backbonejs 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 года.

Литература

Ссылки

Read other articles:

Descriptive scheme Points of a horse Equine anatomy encompasses the gross and microscopic anatomy of horses, ponies and other equids, including donkeys, mules and zebras. While all anatomical features of equids are described in the same terms as for other animals by the International Committee on Veterinary Gross Anatomical Nomenclature in the book Nomina Anatomica Veterinaria, there are many horse-specific colloquial terms used by equestrians. External anatomy Back: the area where the saddle...

 

Thomas G:son (2010) Thomas G:son (eigentlich: Thomas Gustafsson; * 25. Februar 1968 in Skövde) ist ein schwedischer Pop-Komponist und Musiker. Als Komponist nahm er bis 2023 69 Mal am Melodifestivalen sowie 16 Mal am Eurovision Song Contest teil. Inhaltsverzeichnis 1 Leben und Karriere 2 Titel beim Eurovision Song Contest und Ablegern 2.1 Eurovision Song Contest 2.2 Junior Eurovision Song Contest 2.3 Melodifestivalen 3 Verschiedenes 4 Weblinks 5 Einzelnachweise Leben und Karriere Thomas G:so...

 

Buideldieren Bennettwallaby (Macropus rufogriseus) Taxonomische indeling Rijk:Animalia (Dieren)Stam:Chordata (Chordadieren)Klasse:Mammalia (Zoogdieren)Onderklasse:Theria Infraklasse MarsupialiaIlliger, 1811 Afbeeldingen op Wikimedia Commons Buideldieren op Wikispecies Portaal    Biologie Zoogdieren Buideldieren (Marsupialia) zijn een infraklasse van zoogdieren waarvan de vrouwtjesdieren twee baarmoeders hebben. Vaak, maar lang niet altijd, bezitten vrouwtjesdieren een buidel. Deze b...

Supermarket chain in France For the cycling team, see Système U (cycling team). Super U redirects here. For the New Zealand government body, see Superu. This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: Système U – news · newspapers · books · scholar · JSTOR (October 2007) (Learn how and when to remove this ...

 

This article is about the album by Garth Brooks. For the Square Enix budget range called Ultimate Hits, see Square Enix budget ranges. 2007 compilation album by Garth BrooksThe Ultimate HitsCompilation album by Garth BrooksReleasedNovember 6, 2007GenreCountrycountry pop[1]pop rock[1]Length2:03:25LabelPearlProducerAllen ReynoldsGarth Brooks chronology The Lost Sessions(2005) The Ultimate Hits(2007) Blame It All on My Roots: Five Decades of Influences(2013) Alternative C...

 

Dedy YuliantoKabid politik & BangNas PPAL Informasi pribadiLahir10 Desember 1961 (umur 61) Bandung, Jawa BaratAlma materAkademi Angkatan Laut (1985)Karier militerPihak IndonesiaDinas/cabang TNI Angkatan LautMasa dinas1985 – 2019Pangkat Laksamana Muda TNISatuanKorps Pelaut (Kapal Selam)Sunting kotak info • L • B Laksamana Muda TNI (Purn.) Dedy Yulianto (lahir 10 Desember 1961) adalah purnawirawan tokoh militer Indonesia. Yang Sekarang Menjabat sebagai Kabid P...

British journalist, broadcaster, and former politician (born 1953) The Right HonourableMichael PortilloPortillo in 2017BornMichael Denzil Xavier Portillo (1953-05-26) 26 May 1953 (age 70)Bushey, Hertfordshire, EnglandCitizenshipBritish citizenship and Spanish citizenship - dual citizenshipOccupationBroadcaster (1998–present)Politician (1984–2005)TelevisionGreat British Railway Journeys, Great Continental Railway Journeys, The Pyrenees with Michael Portillo, GB NewsPolitical partyForm...

 

Peta Lokasi Kabupaten Pasaman di Sumatera Barat Berikut adalah daftar kecamatan dan kelurahan/desa di Kabupaten Pasaman, Sumatera Barat, Indonesia. Kabupaten Pasaman memiliki 12 kecamatan dan 62 nagari. Luas wilayahnya mencapai 3.947,63 km² dan penduduk 315.470 jiwa (2017) dengan sebaran 80 jiwa/km².[1][2] Daftar kecamatan dan kelurahan di Kabupaten Pasaman, adalah sebagai berikut: Kode Kemendagri Kecamatan Jumlah Status Daftar 13.08.04 Bonjol 5 Nagari Ganggo Hilia Ganggo Mu...

 

Japanese baseball player Baseball player Hikaru ItoIto with the Yokohama DeNA Baystars.Yokohama DeNA BayStars – No. 29CatcherBorn: (1989-04-23) April 23, 1989 (age 34)Bats: RightThrows: RightNPB debutSeptember 13, 2008, for the Orix BuffaloesNPB statistics (through 2020 season)Batting average.238Home runs26RBI219 Teams Orix Buffaloes (2008–2018) Yokohama DeNA BayStars (2018–present) Career highlights and awards Best Nine Award winner (2014) NPB All-Star (2013...

1947 raft journey from South America to Polynesia For other uses of Kon-Tiki, see Kontiki (disambiguation). Kon-Tiki expeditionThe Kon-Tiki raft at the Kon-Tiki Museum, Oslo The Kon-Tiki expedition was a 1947 journey by raft across the Pacific Ocean from South America to the Polynesian islands, led by Norwegian explorer and writer Thor Heyerdahl. The raft was named Kon-Tiki after the Inca god Viracocha, for whom Kon-Tiki was said to be an old name. Heyerdal’s book on the expedition was enti...

 

Ketipes Cardiospermum halicacabum Status konservasiRisiko rendahIUCN82412344 TaksonomiDivisiTracheophytaSubdivisiSpermatophytesKladAngiospermaeKladmesangiospermsKladeudicotsKladcore eudicotsKladSuperrosidaeKladrosidsKladmalvidsOrdoSapindalesFamiliSapindaceaeGenusCardiospermumSpesiesCardiospermum halicacabum Linnaeus, 1753 lbsKetipes (Cardiospermum halicacabum) adalah tumbuhan yang tersebar secara luas di daerah tropis dan subtropis Afrika dan Asia.[1] Nama-nama daerah di Indonesia ant...

 

College baseball tournament NAIA World SeriesSportBaseballFounded1957, 66 years agoCountryUnited StatesVenue(s)Harris FieldLewiston, IdahoMost recentchampion(s)Southeastern University (Florida)Most titlesLewis–Clark State (19)Official websitenaiaworldseries.com The NAIA World Series (officially branded as the Avista NAIA World Series for sponsorship purposes from 2013) is a double-elimination tournament, held since 1957, to determine the baseball champion of the National Association of...

South Korean actress This article is about an actress. For the field hockey player, see Cho Eun-ji. In this Korean name, the family name is Jo. Jo Eun-jiBorn (1981-02-10) February 10, 1981 (age 42)South KoreaOther namesCho Eun-jiOccupationActressYears active2000–presentAgentPrain TPCSpouse Park Jung-min ​(m. 2014)​Korean nameHangul조은지Hanja趙恩智Revised RomanizationJo Eun-jiMcCune–ReischauerCho Ŭnji Jo Eun-ji (born February 10, 1981) is...

 

International sport governing body International Powerlifting FederationSportPowerliftingJurisdictionWorldwideAbbreviationIPFFounded1972 (51 years ago) (1972)HeadquartersLuxembourgPresidentGaston ParageOfficial websitewww.powerlifting.sport The International Powerlifting Federation is an international governing body for the sport of powerlifting as recognized by the General Association of International Sports Federations (GAISF). The IPF was founded in 1972, and comprises member...

 

American politician For other people with the same name, see Charles Smith (disambiguation). Charles Bennett SmithMember of the U.S. House of Representativesfrom New YorkIn officeMarch 4, 1911 – March 3, 1919Preceded byDe Alva S. AlexanderSucceeded byClarence MacGregorConstituency36th district (1911–1913)41st district (1913–1919) Personal detailsBorn(1870-09-14)September 14, 1870Sardinia, New YorkDiedMay 21, 1939(1939-05-21) (aged 68)Wilmington, New YorkResting...

Cuban tobacco-manufacturing company Habanos S.A.TypeS.A.IndustryTobaccoFounded1994; 29 years ago (1994)HeadquartersHavana, CubaProductsCigars, cigarettesOwnerCubatabaco and Altadis[1]Websitehabanos.comFootnotes / referencesCarcinogenicity: IARC group 1 Habanos S.A. is a Cuban manufacturing company of tobacco that controls the promotion, distribution, and export of premium cigars and other tobacco products for Cuba worldwide. It was established in 1994.[2...

 

TårnbyTårnbyNomination district constituencyfor the FolketingLocation of Tårnby within CopenhagenLocation of Copenhagen within DenmarkMunicipalitiesDragør TårnbyConstituencyCopenhagenElectorate40,530 (2022)[1]Current constituencyCreated1966 [a] [2] Tårnby nominating district is one of the 92 nominating districts that was created for Danish elections following the 2007 municipal reform.[3][4][5] It consists of Dragør and Tårnby municipali...

 

Hon. MajorTheodore Frederick JayewardeneMember of the Ceylon Parliamentfor Colombo SouthIn officeNovember 1948 – February 1956Preceded byR. A. de MelSucceeded byBernard Soysa Personal detailsBorn(1911-03-25)25 March 1911NationalityCeylonesePolitical partyUnited National PartySpousePhilis née GunesekeraRelationsTheodore Godfrey Wijesinghe (father),Lena née Attygalle (mother)ChildrenThileka (daughter)ProfessionPlanterMilitary serviceBranch/serviceCeylon Defence ForceRankMajorUnitCe...

Uruguay Uniformi di gara Casa Trasferta Sport Pallavolo Federazione FUV Confederazione CSV Codice CIO URU Ranking FIVB 29º (gennaio 2017) Campionato mondiale Under-18 Partecipazioni 1 (esordio: 1989) Miglior risultato Settimo posto nel 1989 Campionato sudamericano Under-18 Partecipazioni 13 (esordio: 1978) Miglior risultato Quarto posto nel 1988 La nazionale Under-18 di pallavolo femminile dell'Uruguay è una squadra sudamericana composta dalle migliori giocatrici di pallavolo dell'Uruguay c...

 

Voce principale: Unione Sportiva Avellino. US AvellinoStagione 1979-1980 Sport calcio Squadra Avellino Allenatore Rino Marchesi Presidente Fausto Maria Sara Serie A12º posto Coppa ItaliaPrimo turno Maggiori presenzeCampionato: Piotti (30) Miglior marcatoreCampionato: De Ponti (6) StadioPartenio 1978-1979 1980-1981 Si invita a seguire il modello di voce Questa voce raccoglie le informazioni riguardanti l'Unione Sportiva Avellino nelle competizioni ufficiali della stagione 1979-1980. ...

 

Strategi Solo vs Squad di Free Fire: Cara Menang Mudah!