AngularJS Hello World: Вашият първи примерен програмен продукт
⚡ Умно обобщение
Програмите AngularJS Hello World се нуждаят само от един HTML файл, една препратка към скрипт и две директиви, ng-app и ng-controller, за да обвържат променлива от обхвата на контролера със страницата чрез израз с двойни скоби.

Най-добрият начин да видите силата на AngularJS приложение е да създадете първото си основно приложение „Hello World“ в AngularJS.
Има много интегрирани среди за разработка, които можете да използвате за AngularJS разработка, някои от популярните са споменати по-долу. В нашия пример използваме Webstorm като нашата IDE.
- Webstorm
- Sublime Text
- AngularJS Eclipse
- Visual Studio
Здравей свят, AngularJS
Бележка към версията: AngularJS 1.x напусна дългосрочната поддръжка на 31 декември 2021 г. и екипът на рамката потвърждава това. Поддръжката на AngularJS официално приключи през януари 2022 г., с версия 1.8.3 като финалната версия и без никакви корекции за сигурност след нея. Всяка стъпка и блок от код по-долу са запазени точно както са написани. Новите проекти принадлежат на съвременния Angular, където същото упражнение започва с ng serve и самостоятелен компонент и все още използва същото {{ }} синтаксис на интерполацията.
Примерът по-долу показва най-лесния начин да създадете първото си приложение „Hello world“ в AngularJS.
Анотираната екранна снимка по-долу обозначава всяка част от този файл, а седемте му номера съответстват на Code Списък с обяснения по-долу. Заснет е спрямо по-ранна версия 1.4.0, така че неговият скрипт се различава от версията, закачена в кода.
<!DOCTYPE html> <html ng-app="app"> <head> <meta charset="utf 8"> <title>Guru99</title> </head> <body> <h1 ng-controller="HelloWorldCtrl">{{message}}</h1> <script src="https://code.angularjs.org/1.6.9/angular.js"></script> <script> angular.module("app", []).controller("HelloWorldCtrl", function($scope) { $scope.message="Hello World" } ) </script> </body> </html>
Code Обяснение:
- "ng-приложениеКлючовата дума „“ се използва, за да обозначи, че това приложение трябва да се счита за AngularJS приложение. На това приложение може да се даде произволно име.
- Контролерът е това, което се използва за съхраняване на бизнес логиката. В тага h1 искаме да осъществим достъп до регулатор, което ще има логиката да показва „Hello World“, така че можем да кажем, че в този таг искаме да осъществим достъп до контролера с име „HelloWorldCtrl“.
- Ние използваме членска променлива, наречена „message“, която не е нищо друго освен контейнер за показване на съобщението „Hello World“.
- „Тагът script“ се използва за препращане към скрипта angular.js, който има цялата необходима функционалност за AngularJS. Без тази препратка, ако се опитаме да използваме някоя от функциите на AngularJS, те няма да работят.
- „Контролер“ е мястото, където всъщност създаваме нашата бизнес логика, която е нашият контролер. Спецификата на всяка ключова дума ще бъде обяснена в следващите глави. Важно е да се отбележи, че дефинираме метод на контролер, наречен „HelloWorldCtrl“, който е посочен в стъпка 2.
- Създаваме „функция“, която ще бъде извикана, когато нашият код извика този контролер. Обектът $scope е специален обект в AngularJS, който е глобален обект, използван в AngularJS. Обектът $scope се използва за управление на данните между контролера и изгледа.
- Създаваме членска променлива, наречена „message“, присвояваме ѝ стойността „Hello World“ и прикрепяме членската променлива към обекта на scope.
ЗАБЕЛЕЖКА: Директивата ng-controller е ключова дума, дефинирана в AngularJS (Стъпка 2) и се използва за дефиниране на контролери във вашето приложение. Тук, в нашето приложение, използвахме ключовата дума ng-controller, за да дефинираме контролер с име „HelloWorldCtrl“. Самата логика за контролера ще бъде създадена в (Стъпка 5).
Ако кодът се изпълни успешно, ще се покаже следният изход, когато стартирате кода си в браузъра.
Изход:
Ще се покаже съобщението „Hello World“.
Как да заредите AngularJS: CDN или локален файл
Горният пример работи, защото един ред издърпва рамката в страницата, преди браузърът да достигне края на тялото. AngularJS се доставя като единичен JavaСкрипт файл, така че първата програма не се нуждае от стъпка за изграждане и няма мениджър на пакети. Достатъчен е обикновен HTML файл, отворен в браузър.
Има два начина да внесете този файл.
- Позоваване на копие от CDN. Примерът сочи към
code.angularjs.orgи поддържа версия 1.6.9. Този хост все още обслужва 1.x компилации, като най-високата е 1.8.2, докато Google Хостваните библиотеки вече не изброяват AngularJS. - Изтеглете локално копие. Запазете файла до HTML страницата и насочете тага на скрипта към него. Локалното копие поддържа примера работещ офлайн, което е важно, когато прокси сървър блокира CDN.
<!-- Option 1: reference a CDN copy --> <script src="https://code.angularjs.org/1.8.2/angular.min.js"></script> <!-- Option 2: reference a downloaded copy in the same folder --> <script src="angular.min.js"></script>
употреба angular.js докато уча и angular.min.js в производство: неминифицираната компилация отпечатва четлив стек traces, докато минифицираната компилация отчита преименувани променливи.
След като файлът е зареден, ng-app стартира рамката. AngularJS търси този атрибут, когато документът приключи със зареждането, третира елемента, който го носи, като корен на компилацията и стартира модула, посочен в неговата стойност. Следват три последствия:
- Само първият
ng-appна страница се стартира автоматично. Втората се игнорира, освен акоangular.bootstrapсе извиква ръчно. - Стойността трябва да назовава модул, регистриран с ъглов.модул, в противен случай конзолата докладва
[$injector:modulerr]. - Поставяне
ng-appнаhtmlЕлементът , както е в примера, поставя целия документ под AngularJS; по-тесен контейнер също е подходящ.
Как работят {{ }} изразите и обвързването с ng-модел
Двойните скоби около message в тага h1 не са заместител, който се попълва веднъж по време на зареждане. AngularJS компилира този текстов възел в наблюдател на околния обхват, така че рендираният изход tracks $scope.message докато страницата е жива.
Цикълът протича на три стъпки.
- Контролерът записва стойност върху
$scope. - Дайджест пасът сравнява всеки наблюдаван израз с предишния му резултат.
- Всеки израз, чиято стойност се е променила, се рендира на мястото си.
Следователно интерполираният израз е еднопосочен, от обхвата към изгледа. Двупосочното свързване изисква ng-модел- Директива предназначени за контроли на формуляри. Добавяне <input ng-model="message"> до заглавието, въведете текст в полето и заглавието се променя с всяко натискане на клавиш, защото ng-model записва стойността на полето обратно в същото свойство на обхвата, което изразът наблюдава.
Изразите са умишлено ограничени. Те четат свойствата на обхвата, извикват методи за обхват и толерират недефинирани стойности безшумно, но не могат да декларират променливи, да използват оператори за управление на потока или да достигат до глобални обекти като window.
Как да поправите празна страница или нерендерирана {{ }}
Първа AngularJS програма се проваля по един от два видими начина: страницата остава празна или буквалният текст {{message}} се появява там, където трябва да бъде Hello World. И двете означават, че рамката никога не е поемала маркировката. Изпълнете проверките по-долу по ред, с отворена конзола на браузъра.
- Потвърдете зареждането на библиотеката. Отворете панела „Мрежа“ и потърсете
angular.jsзаявка. Код 404 или недостъпна CDN мрежа оставя скобите на екрана недокоснати. - Проверете пътя на скрипта. Относителният път се разрешава спрямо папката, съдържаща HTML файла, така че копие в
jsнуждите на подпапкатаjs/angular.min.js. - Проверете ng-приложението. Липсващ или неправилно изписан атрибут не означава нищо за bootstraps. Атрибутът се слага с тирета като
ng-appв маркирането, въпреки че директивата е с камилски регистър (camel case) в JavaСценарий. - Прочетете грешката в конзолата.
[$injector:modulerr]означава, че модулът, посочен от ng-app, никога не е бил регистриран.[ng:areq]обикновено означава, че името на контролера в маркировката не съвпада с името, предадено на.controller(). - Потърсете второ ng-приложение. Само първият е bootstrap-вант, така че оставено на вътрешен елемент копие тихомълком деактивира тази част от страницата.
Две допълнителни причини обясняват повечето от останалите доклади.
- Файловият протокол. Този пример с един файл работи добре, когато се отваря директно от диск, но всеки шаблон, извлечен през XHR, е блокиран от правилата за произход на браузъра. Обслужвайте папката през HTTP, след като се появят шаблоните.
- Кратък проблясък на брекети. Когато маркирането се рендира преди рамката да го компилира, суровият израз е видим за момент.
ng-cloakкъм елемента или заменете израза сng-bind="message", който никога не показва собствена маркировка.
Ако нито едно от тези неща не е приложимо, съкратете страницата до горния пример и добавете свой собствен код ред по ред.


