Какво е AngularJS? Archiтекстура, характеристики и предимства

⚡ Умно обобщение

Въведението, архитектурата и функциите на AngularJS са обяснени тук за начинаещи, като обхващат дизайна Model-View-Whatever, двупосочното обвързване на данни, директивите, изпълнимо първо приложение и края на дългосрочната поддръжка през декември 2021 г., за който всеки екип трябва да знае.

  • 🧩 Определение: AngularJS е с отворен код JavaСкриптова рамка от Google за изграждане на едностранични приложения.
  • 🏗️ Archiтекстура: Рамката разделя приложението на слоеве Model, View и Controller, които екипът ѝ нарича Model-View-Whatever.
  • 🔗 Обвързване на данни: Двупосочното свързване поддържа модела и изгледа синхронизирани без ръчно актуализиране на DOM код.
  • ???? ️ Директиви: Персонализирани маркери като ng-app, ng-model и ng-bind разширяват обикновения HTML код с поведение на приложението.
  • Първо приложение: Един таг на скрипта плюс ng-app и ng-controller създават работеща поздравителна страница за минути.
  • ⚠️ Край на живота: Google приключи дългосрочната поддръжка на 31 декември 2021 г., така че няма да постъпват други корекции за сигурност.
  • 🔄 миграция: Новите проекти трябва да са насочени към съвременния Angular, докато наследените AngularJS приложения се нуждаят от планиран път за надграждане.

Какво е AngularJS

Какво е AngularJS?

AngularJS е рамка с отворен код Model-View-Controller, написана на JavaСценарийAngularJS беше една от най-популярните уеб рамки през 2010-те и се използва за разработка...ping предимно приложения с една страница. Тази рамка е разработена от група разработчици от Google себе си.

Заради огромната подкрепа на Google и идеи от широк обществен форум, рамката е била актуализирана през целия си активен живот. Тя е включвала и водещите тенденции в разработката от този период, поради което толкова много производствен код все още работи върху нея днес.

⚠️ Важно: AngularJS достигна края на жизнения си цикъл. Google постави AngularJS 1.x в тригодишен период на дългосрочна поддръжка на 1 юли 2018 г. и го удължи с шест месеца поради COVID-19. Тази поддръжка приключи на 31 декември 2021Версия 1.8.3 е финалната версия и Google не издава допълнителни корекции на грешки или закърпвания за сигурност. Научете AngularJS, за да поддържате съществуващи системи и изберете модерни ъглов за нещо ново.

Един терминологичен момент е добре да се уточни предварително. AngularJS е широко описван като MVC рамка, което е полезна отправна точка. Самият екип на AngularJS обаче предпочете етикета MVW (Модел-Изглед-Каквото и да е), защото средата за изпълнение се държи по-близо до Model-View-ViewModel, отколкото до класическия MVC. Официалният Документация на AngularJS нарича го структурна рамка за динамични уеб приложения. След като това е уредено, ето как се съчетават частите.

AngularJS Archiтекстура

AngularJS следва MVC архитектурата. Диаграмата на MVC рамката е показана по-долу:

AngularJS Archiтекстура

AngularJS Archiтектурна диаграма

Всеки от трите слоя има ясна задача:

  • Контролерът представлява слоя, който има бизнес логиката. Потребителските събития задействат функциите, които се съхраняват във вашия контролер. Потребителските събития са част от контролера.
  • Изгледите се използват за представяне на презентационния слой, който се предоставя на крайните потребители.
  • Моделите се използват за представяне на вашите данни. Данните във вашия модел могат да бъдат толкова прости, колкото просто да имате примитивни декларации. Например, ако поддържате студентско приложение, вашият модел на данни може да има само идентификатор на студент и име. Или също така може да бъде сложно, като има структуриран модел на данни. Ако поддържате приложение за собственост на автомобил, можете да имате структури, които да дефинират самото превозно средство по отношение на неговия обем на двигателя, капацитет на седалките и т.н.

На практика контролерът рядко въвежда данни в изгледа ръчно. AngularJS наблюдава модела и обновява изгледа вместо вас, а тази автоматична синхронизация се захранва от набора от функции, описан по-долу.

Характеристики на AngularJS

AngularJS има следните ключови характеристики, което го прави една от мощните рамки на пазара:

  1. MVC – Рамката е изградена върху известната концепция на MVC (модел-изглед-контролер). Това е шаблон за проектиране, използван във всички съвременни уеб приложения. Този модел се основава на разделянето на слоя бизнес логика, слоя данни и презентационния слой на отделни секции. Разделянето на отделни секции е направено така, че всяка една да се управлява по-лесно.
  2. Обвързване на модел на данни – Не е необходимо да пишете специален код, за да обвържете данни с HTML контролите. Това може да се направи чрез AngularJS, като просто добавите няколко фрагмента код.
  3. Писане на по-малко код – Когато извършвате DOM манипулация на много JavaСценарий беше необходимо да се напише за проектирането на всяко приложение. Но с AngularJS ще бъдете изумени от по-малкото количество код, което трябва да напишете за манипулиране на DOM.
  4. Единица Тестване готови – Дизайнерите в Google не само разработи AngularJS, но и разработи рамка за тестване, наречена „Karma“, която помага при проектирането на модулни тестове за AngularJS приложения.
  5. директиви – Маркери като например ng-приложение, ng-модел и ng-повтаряне добавяне на поведение към обикновени HTML елементи.

Тези функции са най-лесни за разбиране, след като ги стартирате, така че следващият раздел изгражда работеща страница от нулата.

Как да настроите AngularJS и да създадете първото си приложение

Да четеш за обвързването на данни е едно, а да го гледаш как работи е съвсем друго. AngularJS не се нуждае от мениджър на пакети, от bundler и от компилатор, така че първото ти приложение е един HTML файл, който се изпълнява директно от твърдия ти диск.

Стъпка 1) Добавете библиотеката AngularJS

Заредете библиотеката от CDN с един скриптов таг. Версия 1.8.3 е последната версия на AngularJS, така че закачете страницата си към тази точна версия, а не към плаваща.

Стъпка 2) Маркирайте корена на приложението с ng-app

Директивата ng-app казва на компилатора на AngularJS коя част от страницата притежава. Поставянето ѝ в html тага предава целия документ на рамката, а стойността, която ѝ давате, назовава модула, който ще създадете.

Стъпка 3) Свързване на данни с ng-модел и израз

Директивата ng-model свързва входен елемент със свойство в обхвата, а израз с двойни скоби отпечатва същото свойство другаде на страницата. Тъй като свързването е двупосочно, typing в полето актуализира заглавието незабавно, без ваш собствен обработчик на събития.

Стъпка 4) Добавете контролер за логиката

Контролерът е обикновен JavaСкриптова функция, която получава обекта $scope и му задава начални стойности. Регистрирането му в модула го прави достъпен за директивата ng-controller.

<!DOCTYPE html>
<html ng-app="helloApp">
<head>
  <meta charset="UTF-8">
  <title>AngularJS Hello World</title>
  <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.8.3/angular.min.js"></script>
</head>
<body>

  <div ng-controller="GreetController">
    <input type="text" ng-model="name" placeholder="Enter your name">
    <h3>Hello {{ name }}!</h3>
  </div>

  <script>
    // Step 1: create the module named in ng-app
    angular.module("helloApp", [])
      // Step 2: register a controller on that module
      .controller("GreetController", function ($scope) {
        $scope.name = "World";
      });
  </script>
</body>
</html>

Стъпка 5) Стартирайте страницата и проверете резултата

Запазете файла като index.html и го отворете във всеки браузър. Заглавието първоначално гласи „Здравей, свят!“ и се презаписва при всяко натискане на клавиш. Не е необходим уеб сървър, нито стъпка за изграждане.

Ако нищо не се появи, отворете конзолата на браузъра и потвърдете, че CDN скриптът е зареден и че името на модула в ng-app съвпада точно с името, предадено на angular.module, защото несъответствието води до тиха грешка. Тази малка страница вече демонстрира силните страни, описани по-долу.

Предимства на AngularJS

Ето предимствата на AngularJS:

  • Тъй като е рамка с отворен код, можете да очаквате броят на грешките или проблемите да бъде минимален.
  • Двупосочно свързване – AngularJS поддържа данните и презентационния слой синхронизирани. Не е необходимо да пишете допълнително JavaСкрипт код, който да синхронизира данните във вашия HTML код и слоя с данни. AngularJS ще направи това автоматично вместо вас. Просто трябва да посочите кой контрол е обвързан с коя част от вашия модел.
  • Маршрутизиране – AngularJS може да се погрижи за маршрутизирането, което означава преминаване от един изглед към друг. Това е ключовият фундамент на приложенията с една страница; при който можете да преминавате към различни функционалности във вашето уеб приложение въз основа на взаимодействието с потребителя, но все пак да останете на една и съща страница.
  • AngularJS поддържа тестване, както Единично тестване, и Тестване на интеграцията.
  • Той разширява HTML, като предоставя свои собствени елементи, наречени директиви. На високо ниво, директивите са маркери върху DOM елемент (като атрибут, име на елемент и коментар или CSS клас), които казват на HTML компилатора на AngularJS да прикачи определено поведение към този DOM елемент. Тези директиви помагат за разширяване на функционалността на съществуващите HTML елементи, за да се даде повече мощност на вашето уеб приложение.

Предимства на AngularJS

Предимства на AngularJS

Балансираният поглед е също толкова важен, така че компромисите са посочени по-долу.

Недостатъци и ограничения на AngularJS

Всяка рамка прави компромис с нещо и AngularJS не е изключение. Това са ограниченията, за които най-често се съобщава от екипи, поддържащи AngularJS приложения:

  • Няма собствен защитен слой – AngularJS не предоставя нито удостоверяване, нито оторизация, така че и двете трябва да бъдат наложени на сървъра.
  • Пълна зависимост от JavaСценарий – Ако посетителят деактивира JavaСкрипт, страницата се връща към гола маркировка и не се рендира.
  • Производителност на цикъла на дайджест – Промените се откриват чрез многократно сравняване на наблюдаваните стойности, така че страниците с няколко хиляди връзки могат да изглеждат бавни.
  • Стръмна крива на обучение – Обхватите, директивите, фабриките, услугите и доставчиците се припокриват и често съществуват няколко начина за постигане на един и същ резултат.
  • Видимост на търсачката – Изгледите се сглобяват в браузъра, така че е необходима допълнителна работа, като например предварително рендиране, преди роботите да индексират страниците надеждно.
  • Няма други актуализации – От 31 декември 2021 г. не съществуват официални корекции, така че новооткритата уязвимост остава непоправена, освен ако търговски доставчик не предостави корекция.

Тази последна точка тласка повечето екипи към наследната рамка, която е различен продукт въпреки споделеното име.

AngularJS срещу Angular: Каква е разликата?

AngularJS и Angular често се бъркат, защото имената им са толкова близки, но те са отделни рамки с различни езици, архитектури и линии на издания. AngularJS се отнася само до серията 1.x, описана на тази страница. Angular означава версия 2 и всяка версия след нея, напълно преработена версия, издадена през 2016 г., която все още се разработва активно. Code не се движи между тях без целенасочена миграционна работа.

База за сравнение AngularJS (1.x) Angular (2 и по-нови версии)
Език JavaСценарий TypeScript
Градивен елемент Контролери и $scope Компоненти и класове
Archiтекстура MVC / MVW На базата на компоненти
Поддръжка за мобилни устройства Не е предназначено за мобилни устройства Вградена мобилна поддръжка
Инжектиране на зависимост Базиран на низове, няколко синтаксиса Йерархична, базирана на тип
Инструменти за команден ред Не е предоставено Ъглов CLI
Състояние на поддръжка Приключи на 31 декември 2021 г. Активно поддържан

Практическото следствие е, че AngularJS контролер не може просто да бъде пуснат в Angular проект. Миграцията означава пренаписване на всеки контролер като компонент, така че планирайте я като истинска инженерна работа, а не като надстройка. Накратко, третирайте AngularJS като умение за поддръжка, а Angular като платформа за нова разработка.

Въпроси и Отговори

Google не предоставя нищо повече. Търговската разширена поддръжка се продава от доставчици като HeroDevs, която доставя корекции за сигурност за организации, които не могат да мигрират веднага. Всички останали трябва да разчитат на собствените си корекции.

Да, за повтарящите се части. Асистенти като Копилот на GitHub бързо конвертирайте контролерите в компоненти и $scope в свойства на клас. ArchiСтруктурните решения, маршрутизирането и проектирането на състоянията все още се нуждаят от човек, който да ги проверява.

Единичните тестове обикновено се изпълняват на Карма с жасмин за твърдения. И двата са изградени успоредно с AngularJS, а модулът ngMock предоставя фалшиви услуги, така че контролерите могат да бъдат тествани изолирано.

Обикновено да, защото AngularJS е силно представен в данните за обучение. Често срещан проблем е отклонението на версиите: моделите често отговарят със съвременен синтаксис на Angular. Посочете изрично версията 1.x в подканата си и проверете всеки генериран фрагмент.

AngularJS 1.8.3 е последната версия, публикувана от GoogleВсеки урок, сочещ към 1.2 или 1.6, е остарял, така че закачете новата работа към 1.8.3 и прочетете официалното ръководство. състояние на поддръжката на версията стр.

Обобщете тази публикация с: