AngularJS

AngularJS
AngularJS logo
Типбібліотека JavaScript, Односторінковий застосунок
РозробникGoogle Inc. та спільнота.
Перший випуск20 жовтня 2010; 13 років тому (2010-10-20)[1]
Стабільний випуск1.8.0 (1 червня 2020; 4 роки тому (2020-06-01)[2])
Версії1.8.3 (7 квітня 2022)[3][4]
ПлатформаВеб платформа
Операційна системабагатоплатформена
Мова програмуванняTypeScript, JavaScript
Розмір144 KB мінімізована версія
1 MB версія для розробки
Стан розробкиАктивний
ЛіцензіяMIT License
Репозиторійgithub.com/angular/angular.js
Вебсайтwww.angularjs.org

AngularJS — JavaScript-фреймворк з відкритим програмним кодом, який розробляє Google. Призначений для розробки односторінкових додатків, що складаються з одної HTML сторінки з CSS і JavaScript. Його мета — розширення браузерних застосунків на основі шаблону Модель-вид-контролер (MVC), а також спрощення їх тестування та розробки.

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

За даними служби аналізу JavaScript для Libscore, AngularJS використовується на вебсайтах Wolfram Alpha, NBC, Walgreens, Intel, Sprint, ABC News та близько 12,000 інших сайтів з 1 мільйона протестованих у жовтні 2016 року. AngularJS наразі входить до трійки проектів, що набрали найбільшу кількість зірок на GitHub.

AngularJS — це фронтенд частина стеку MEAN, що складається з бази даних MongoDB, програмного каркаса для розробки вебдодатків Express.js, самого Angular.js та платформи Node.js.

AngularJS

AngularJS побудований на переконанні, що декларативне програмування слід використовувати для створення користувацьких інтерфейсів та підключення компонентів програмного забезпечення, тоді як імперативне програмування краще підходить для визначення бізнес-логіки додатка. Фреймворк адаптує та розширює традиційний HTML, щоб представити динамічний вміст через двостороннє зв'язування даних, що дозволяє автоматично синхронізувати моделі та перегляди. Як результат, AngularJS зменшує значення явної DOM-маніпуляції з метою покращення тестування та продуктивності.

Конструктивні цілі AngularJS включають:

  • відокремлення DOM-маніпуляцій від логіки додатків, що суттєво впливає на спосіб побудови коду.
  • відокремлення клієнтської частину програми від серверної. Це дозволяє розробці працювати паралельно і використовувати повторно обидві сторони.
  • проведення розробника через весь шлях створення додатку: від проектування користувацького інтерфейсу, через написання бізнес-логіки, до тестування .

AngularJS реалізує шаблон MVC для відокремлення представлення, даних та логічних компонентів. Використовуючи впровадження залежності, Angular традиційно постачає сервісні служби, такі як контролери, залежні від вигляду, для клієнт-серверних вебдодатків. Відповідно, зменшується навантаження на сервер.

Область видимості

AngularJS використовує термін «область видимості» у схожій манері до основ комп'ютерних наук.

Область видимості у комп'ютерних науках описує, коли конкретна прив'язка у програмі є валідною. Специфікація ECMA-262 визначає область видимості як лексичне середовище, в якому об'єкт функції виконується в клієнтському вебсценарії.

Як частина архітектури MVC, область видимості формує «Модель». Всі змінні, які визначені в області видимості, можуть також бути доступні у «Контроллері» та «Представленні». В AngularJS «область видимості» є свого роду об'єктом, який сам може бути в або поза областтю видимості в будь-якій частині програми, відповідно до звичайних правил області видимості змінних в JavaScript, як і будь-який інший об'єкт. Область видимості здійснює роль клею, який зв'язує «Контроллер» і «Представлення».

Популярність

Найбільшу популярність використання AngularJS має в Україні[5].

Історія розвитку

AngularJS було розроблено Miško Hevery у 2009 році в компанії Brat Tech LLC як програмне забезпечення для онлайн-зберігання JSON, що вимірюються мегабайтами, для полегшення розробки корпоративних додатків. Сервіс був розміщений на вебдомені «GetAngular.com» і мав декілька передплатників, перш ніж вони вирішили відмовитися від бізнес-ідеї та випустити Angular як бібліотеку з відкритим вихідним кодом.

До версії було 1.6 додано багато концепцій Angular-AngularJS, включаючи концепцію компонентної архітектури додатків. Цей реліз серед інших виключив Sandbox, що, на думку багатьох розробників, забезпечило додаткову безпеку, незважаючи на численні вразливі місця, які було виявлено. Поточна (станом на лютий 2018 р.) стабільна версія AngularJS — 1.6.9.

У січні 2018 року був оголошений графік поступового скасування AngularJS: після версії 1.7.0, активний розвиток AngularJS триватиме до 30 червня 2018 року. Після цього 1.7 буде підтримуватися до 30 червня 2021 року як довгострокова підтримка.

Дзен AngularJS

Angular створений з упевненістю в тому що, декларативний код краще імперативного коли потрібно створити UI і зв'язати компоненти між собою, з іншого боку імперативний код прекрасно підходить для вираження бізнес-логіки.

Гарна ідея — розділити маніпуляції з DOM і логіку програми. Такий поділ дозволяє спростити тестування коду. Складність тестування багато в чому залежить від структурованості коду.

Дуже корисно те, що фреймворк направляє розробників протягом усієї побудови програми: починаючи з дизайну UI, через написання бізнес-логіки, до тестування.

Завжди добре робити рутинні завдання тривіальними, а складні — можливими.

Angular звільняє від рутини:

Реєстрація колбеків: Реєстрація функцій зворотного виклику засмічує код. Видалення шаблонного коду (такого, як функції зворотного виклику) — завжди добре. Це значно зменшує кількість коду, який потрібно написати і покращує читання і розуміння коду застосунків написаних на AngularJS.

Програмне маніпулювання DOM: Декларативно описуючи як повинен змінюватися UI в залежності від зміни стану програми, ви звільняєтесь від низькорівневих маніпуляцій з DOM. Більшості застосунків, написаних за допомогою Angular, ніколи не доведеться програмно маніпулювати DOM, хоча ви це можете це робити якщо захочете.

Потік даних з/в UI: Більшість операцій в AJAX застосунках складають CRUD-операції. Потік даних від сервера до внутрішнього об'єкту, а потім до HTML-форми, що дозволяє користувачам змінювати форму, перевіряти коректність даних і показувати помилки валідації, потім, повертаючись у внутрішню модель і потім на сервер, створює забагато шаблонного коду. Angular позбавляє від більшої частини такого коду, залишаючи код, що описує загальний потік даних в додатку, а не деталі реалізації.

Написання тонни коду тільки для того що б щось працювало: Зазвичай вам необхідно написати багато додаткового коду для того, щоб отримати простий «Hello World» AJAX застосунок. За допомогою Angular можна швидко створити додаток використовуючи сервіси, які автоматично вбудовуються в додаток в Guice-подібному dependency-injection стилі. Це дозволяє швидко приступити до розробки вашого додатка. Як бонус ви отримаєте повний контроль над ініціалізацією в автоматизованих тестах.

Філософія Angular

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

Важливі директиви

Директиви AngularJS дозволяють розробнику модифікувати поведінку деяких елементів, чи описати власні елементи.

ng-app
Оголошує елемент кореневим елементом застосунку, дозволяючи змінювати поведінку за допомогою спеціальних тегів.
ng-bind
Змінює текст елемента на значення виразу. <span ng-bind="name"></span> відобразить значення змінної name всередині тегу span. Будь-які зміни змінної будуть миттєво відображені в DOM, де б змінна не використовувалась.
ng-init

Ініціалізує/визначає дані/змінні вашого додатку.

ng-model
Подібна до ng-bind, але дозволяє двостороннє зв'язування даних між (зміни в DOM будуть змінювати змінну).
ng-class
Дозволяє динамічно додавати та забирати класи елемента.: <div class="{'active': activeDiv}"></div>
ng-controller
Вказує клас JavaScript контролера.
ng-repeat
Створює кілька екземплярів елемента, для кожного об'єкта колекції.
ng-show & ng-hide
Показують чи ховають елемент залежно від значення булевого виразу. Це досягається за допомогою задання в CSS атрибуту display.

ng-disabled

Встановлює атрибут disabledдля елемента (кнопка, поле вводу, тощо), якщо вираз в середині ng-disabled вірний.

<input ng-model='name' ng-disabled='name.length > 15'> (встановить атрибут disabled для поля вводу при введенні рядка більше 15 символів)

ng-click/ngDblclick

Виконує описаний вираз при кліку/подвійному кліку на елемент. <button ng-click='submitForm()'></button> (Виконує функцію submitForm при кліку на кнопку)

ng-mousedown/ng-mouseup

Подібні до ng-click, спрацьовують при натисканні/відпусканні лівої кнопки миші на елементі.

ng-if

Видаляє чи створює елемент в DOM дереві. <div ng-if='showBlock'>...</div> Директива дуже подібна до директиви ng-show. Для того щоб запобігти втрат у швидкодії, рекомендується застосовувати директиву ng-show для приховування великої кількості елементів у зв'язку повільної роботи DOM дерева.

Розширення Chrome

У липні 2012 року команда Angular випустила розширення для браузера Google Chrome під назвою Batarang, що покращує налагодження вебпрограм, створених за допомогою Angular. Розширення має на меті забезпечити легке визначення вузьких місць роботи та пропонує графічний інтерфейс для налагодження додатків. З кінця 2014 р. та початку 2015 р. розширення не сумісне з останніми випусками (після v1.2.x) з Angular. Останнє оновлення для цього розширення відбулося 4 квітня 2017 року.

Швидкодія

AngularJS визначає парадигму циклу дайджестів. Цей цикл можна розглядати як цикл, під час якого Angular перевіряє, чи є якісь зміни у всіх змінних, за якими спостерігають усі $scopes. Якщо $scope.myVar оголошена в контроллері, і ця змінна була відмічена для перегляду, то Angular буде слідкувати за змінами myVar на кожній ітерації циклу.

Такий підхід потенційно може сповільнити рендеринг, коли AngularJS перевіряє надто багато змінних в $scopes на кожній ітерації циклу.

Для покращення швидкодії рекомендується дотримуватись цих правил:

  • не використовувати подвійний data-binding, де це не потрібно (в статичних таблицях для відображення даних)
  • для відображення даних використовувати дерективу ng-bind
  • використовувати односторонній біндиг
  • зменьшити кількість фільтрів (translate, lowercase …)
  • для рендерингу великої кількості елементів списку або таблиці — використовувати пагінацію (посторінкову або при скролінгу)

Джерела

  1. Earliest known releases. Архів оригіналу за 29 липня 2017. Процитовано 15 вересня 2016.
  2. Release v1.5.8. GitHub. 22 липня 2016. Архів оригіналу за 3 жовтня 2021. Процитовано 10 серпня 2016.
  3. Release 1.8.3 — 2022.
  4. 1.8.3 ultimate-farewell (2022-04-07)
  5. Архівована копія. Архів оригіналу за 2 жовтня 2015. Процитовано 1 жовтня 2015.{{cite web}}: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання)
  6. What Is Angular?. Архів оригіналу за 20 травня 2013. Процитовано 12 лютого 2013.

Посилання

  • Буник, Тарас (18 лютого 2016). Вступ в AngularJS. Блоґ одного кібера. Архів оригіналу за 13 березня 2016. Процитовано 11 березня 2016.

Read other articles:

Isle of Man Tourist Trophy 1907 Tanggal 28 Mei 1907 Lokasi St John's, Isle of Man Jalur St John's Short Course 15 mil, 1.470 kaki (25,49 km) Penyelenggara The Auto-Cycle Club Sekretaris F. Straight esq. Kelas Silinder Tunggal Pertama Charlie Collier, Matchless-JAP Kedua Jack Marshall, Triumph Ketiga Frank Hulbert, Triumph Lap Tercepat Harry Collier 23min. 5 2/5sec. 41.81 mph Kelas silinder kembar Pertama Rem Fowler, Norton-Peugeot Kedua Billy Wells, Vindec Special-Peugeot Ketiga Billy Heaton, Re…

ColoradoIl fiume Colorado nei pressi di Page, in ArizonaStati Stati Uniti Messico SuddivisioniColorado, Utah, Arizona, Nevada, California, Bassa California, Sonora Lunghezza2 339 km Portata media620 m³/s Bacino idrografico629 100 km² Altitudine sorgente2 750 m s.l.m. NasceLago La Poudre Pass SfociaGolfo di California Mappa del fiume Modifica dati su Wikidata · Manuale Colorado e i suoi principali affluenti Vista dal basso del Colorado al 174º miglio nel Grand Ca…

Legacy of the 500,000Poster rilis teaterNama lainNama JepangKanji 五十万人の遺産 TranskripsiRevised HepburnGojuman-nin no Isan SutradaraToshiro MifuneProduser Sanezumi Fujimoto Tomoyuki Tanaka Ditulis olehRyūzō KikushimaPemeran Toshiro Mifune Tatsuya Mihashi Tsutomu Yamazaki Sachio Sakai Yoshio Tsuchiya Yoshifumi Tajima Tatsuya Nakadai Mie Hama Yuriko Hoshi Penata musikMasaru SatoSinematograferTakao SaitoPenyuntingShūichi IoharaAkira Kurosawa (tidak dikreditkan)[butuh r…

Australia terbagi menjadi 9 zona waktu, yaitu:[1] Waktu Standar McDonald, yang mencakup wilayah Pulau Heard dan Kepulauan McDonald. (UTC+05:00). Waktu Standar Cocos, yang mencakup wilayah Kepulauan Cocos dan sekitarnya. (UTC+06:30). Waktu Standar Natal, yang mencakup wilayah Pulau Natal dan sekitarnya. (UTC+07:00). Waktu Australia Barat, yang mencakup wilayah Australia Barat dan sekitarnya. (UTC+08:00). Waktu Australia Barat Tengah, yang mencakup wilayah perbatasan Australia Barat dengan…

GirimartoKecamatanPeta lokasi Kecamatan GirimartoNegara IndonesiaProvinsiJawa TengahKabupatenWonogiriPemerintahan • CamatSuparmoPopulasi • Total56,212(2.012) jiwaKode Kemendagri33.12.22 Kode BPS3312240 Luas62,37 km²Desa/kelurahan12 desa2 kelurahan Girimarto (Jawa: ꦒꦶꦫꦶꦩꦂꦠꦺꦴ) adalah sebuah kecamatan di Kabupaten Wonogiri, Jawa Tengah. Kecamatan ini terletak di bagian utara Kabupaten Wonogiri dan terletak sekitar 20 km dari ibukota kabupaten…

العلاقات الأوزبكستانية الكمبودية أوزبكستان كمبوديا   أوزبكستان   كمبوديا تعديل مصدري - تعديل   العلاقات الأوزبكستانية الكمبودية هي العلاقات الثنائية التي تجمع بين أوزبكستان وكمبوديا.[1][2][3][4][5] مقارنة بين البلدين هذه مقارنة عامة ومرجعية لل…

Piala Dunia FIFA 19941994 FIFA World Cup (Inggris)Logo Resmi Piala Dunia FIFA 1994Informasi turnamenTuan rumahAmerika SerikatJadwalpenyelenggaraan17 Juni–17 JuliJumlahtim peserta24 (dari 5 konfederasi)Tempatpenyelenggaraan9 (di 9 kota)Hasil turnamenJuara Brasil (gelar ke-4)Tempat kedua ItaliaTempat ketiga SwediaTempat keempat BulgariaStatistik turnamenJumlahpertandingan52Jumlah gol141 (2,71 per pertandingan)Jumlahpenonton3.587.538 (68.991 per pertandinga…

يفتقر محتوى هذه المقالة إلى الاستشهاد بمصادر. فضلاً، ساهم في تطوير هذه المقالة من خلال إضافة مصادر موثوق بها. أي معلومات غير موثقة يمكن التشكيك بها وإزالتها. (ديسمبر 2018) الدوري القبرصي لكرة القدم 2011-2012 تفاصيل الموسم الدوري القبرصي الدرجة الأولى  النسخة 73  البلد قبرص  ا…

Isai Isai (bahasa Ibrani: יִשַׁי atau יֵשַׁי, Modern Yíšay atau Yéšay Tiberias Yíšay atau Yēšay; Inggris: Jesse) adalah ayah tokoh Alkitab Raja Daud yang disebutkan dalam Alkitab Ibrani dan Perjanjian Lama di Alkitab Kristen, terutama dalam Kitab 1 dan 2 Samuel. Daud beberapa kali disebut dengan istilah Anak Isai (Ibrani: בֶּןיֿשׁי; ben Yishai). Isai adalah anak laki-laki Obed, dan cucu dari Rut dan Boas dari Suku Yehuda.[1] Ia tinggal di Be…

Koordinat: 31°46′18″N 35°13′44″E / 31.7718°N 35.229°E / 31.7718; 35.229 Pemandangan Senakel di lantai atas Makam Daud di Gunung Zion Senakel (dari Latin cēnāculum ruang makan), juga disebut sebagai Ruang Atas, adalah sebuah ruang di Makam Daud, Yerusalem, yang biasanya dianggap sebagai tempat Perjamuan Terakhir. Kata tersebut berasal dari kata bahasa Latin cēnō, yang artinya Aku makan. Injil Markus memakai kata Yunani Kione: αναγαιον, anagaion, (Ma…

Pour les articles homonymes, voir Lavau. Janine Mossuz-LavauJanine Mossuz-Lavau en avril 2015.FonctionDirectrice de recherche au CNRSBiographieNaissance 9 septembre 1942 (81 ans)Saint-Jean-de-Tholome (Haute-Savoie)Nationalité françaiseFormation Institut d'études politiques de Paris (doctorat) (jusqu'en 1968)Université Paris-Nanterre (doctorat) (jusqu'en 1968)Activités Politologue, sociologue, professeure d’universitéConjoint Georges LavauAutres informationsA travaillé pour Institut…

Vue d'ensemble des rochers. Les rochers de Puychaud sont de gros blocs granitiques situés dans les monts de Blond dans le département de la Haute-Vienne, à environ 450 mètres d'altitude. Selon une récente tradition populaire, ils marqueraient la frontière entre pays d'oc et pays d'oïl. En réalité, la langue d'oc est parlée jusqu'à 40 km plus à l'ouest dans le département de la Charente et jusqu'à 50 km plus au nord, à l'extrême sud du département de l'Indre. Une plaque célèbre…

Questa voce sull'argomento aziende cinesi dei trasporti è solo un abbozzo. Contribuisci a migliorarla secondo le convenzioni di Wikipedia. HongqiStato Cina Fondazione1958 Sede principaleChangchun GruppoFirst Automobile Works SettoreAutomobilistico Prodottiautomobili Sito webhongqi.faw.cn/ e www.hongqi-auto.com/ Modifica dati su Wikidata · Manuale Hongqi CA72 del 1959, prima vettura del costruttore cinese Hongqi (in cinese 红旗; in pinyin Hóngqí) è una casa automobilistica c…

Slanting line punctuation mark (/) / redirects here. For other uses, see / (disambiguation). For technical reasons, :/ redirects here. For the smiley, see List of emoticons. /Slash or solidus  ⁄   ∕  / Fraction slash Division slash Fullwidth solidus The slash is the oblique slanting line punctuation mark /. It is also known as a stroke, a solidus, a forward slash and several other historical or technical names. Once used to mark periods and commas, the slash is now used…

Coppa delle Fiere 1965-1966Coupe des villes de foires 1965-1966 Competizione Coppa delle Fiere Sport Calcio Edizione 8ª Organizzatore Comitato privato Date 1965 – 1966 Partecipanti 48 Nazioni 25 Formula Eliminazione diretta A/R Risultati Vincitore  Barcellona(3º titolo) Secondo  Real Saragozza Semi-finalisti  Chelsea Leeds Utd Cronologia della competizione 1964-1965 1966-1967 Manuale L'ottava edizione della Coppa delle Fiere venne disputata nella stagione 1965-66. La comp…

History of lands by the Tigris and EuphratesSeated parturient figurine from the Halaf period. Anatolia - 5th millennium BC. Walters Art Museum - Baltimore.The prehistory of Mesopotamia is the period between the Paleolithic and the emergence of writing in the area of the Fertile Crescent around the Tigris and Euphrates rivers, as well as surrounding areas such as the Zagros foothills, southeastern Anatolia, and northwestern Syria. In general, Paleolithic Mesopotamia is poorly documented, with the…

Antibacterial drug Streptomycin. 2D line-angle representation. Aminoglycoside is a medicinal and bacteriologic category of traditional Gram-negative antibacterial medications that inhibit protein synthesis and contain as a portion of the molecule an amino-modified glycoside (sugar).[1][2] The term can also refer more generally to any organic molecule that contains amino sugar substructures. Aminoglycoside antibiotics display bactericidal activity against Gram-negative aerobes and…

Сибирский горный козёл Научная классификация Домен:ЭукариотыЦарство:ЖивотныеПодцарство:ЭуметазоиБез ранга:Двусторонне-симметричныеБез ранга:ВторичноротыеТип:ХордовыеПодтип:ПозвоночныеИнфратип:ЧелюстноротыеНадкласс:ЧетвероногиеКлада:АмниотыКлада:СинапсидыКласс:…

Mountain in New Territories, Hong Kong Robin's Nest紅花嶺Robin's Nest, as viewed from the Man Uk Pin Village near Sha Tau Kok.Highest pointElevation492 m (1,614 ft)Coordinates22°32′29″N 114°11′24″E / 22.54139°N 114.19000°E / 22.54139; 114.19000GeographyRobin's NestEastern New Territories, Hong Kong Robin's Nest (Chinese: 紅花嶺; Jyutping: Hung4 Faa1 Leng5 (former name:麻雀嶺)) is a hill located in Robin's Nest Country Park, nort…

A wife of Abd al-Muttalib, grandfather of Muhammad This article relies excessively on references to primary sources. Please improve this article by adding secondary or tertiary sources. Find sources: Mumanna'a bint Amr – news · newspapers · books · scholar · JSTOR (February 2022) (Learn how and when to remove this message) Mumannaʿa bint ʿAmr (Arabic: ممنعة بنت عمرو) was a wife of Abd al-Muttalib. She was from the Khuza'a tribe in Mecca. Her…

Kembali kehalaman sebelumnya