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 Объяснение:
- "нг-приложениеКлючевое слово '' используется для обозначения того, что данное приложение следует рассматривать как приложение AngularJS. Приложению можно дать любое имя.
- Контроллер — это то, что используется для размещения бизнес-логики. В теге h1 мы хотим получить доступ к контроллер, который будет содержать логику для отображения «Hello World», поэтому мы можем сказать, что в этом теге мы хотим получить доступ к контроллеру с именем «HelloWorldCtrl».
- Мы используем переменную-член под названием «message», которая представляет собой не что иное, как заполнитель для отображения сообщения «Hello World».
- Тег «script» используется для ссылки на скрипт angular.js, который содержит весь необходимый функционал для AngularJS. Без этой ссылки любые функции AngularJS работать не будут.
- «Контроллер» — это место, где мы фактически создаём нашу бизнес-логику, которая и является нашим контроллером. Подробности каждого ключевого слова будут объяснены в последующих главах. Важно отметить, что мы определяем метод контроллера под названием «HelloWorldCtrl», на который ссылаются на шаге 2.
- Мы создаём «функцию», которая будет вызываться, когда наш код обращается к этому контроллеру. Объект `$scope` — это особый объект в AngularJS, глобальный объект, используемый внутри AngularJS. Объект `$scope` используется для управления данными между контроллером и представлением.
- Мы создаём переменную-член с именем «message», присваиваем ей значение «Hello World» и прикрепляем эту переменную-член к объекту области видимости.
ЗАМЕТКА: Директива 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 На сайте Hosted Libraries больше не отображается AngularJS. - Загрузите локальную копию. Сохраните файл рядом с HTML-страницей и укажите на него путь в теге <script>. Локальная копия позволяет запускать пример в автономном режиме, что важно, когда прокси-сервер блокирует 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 В производственной среде: неминифицированная сборка выводит читаемый стек вызовов. tracДа, в то время как в минифицированной сборке сообщается о переименованных переменных.
После загрузки файла, ng-app Запускает фреймворк. AngularJS ищет этот атрибут после завершения загрузки документа, рассматривает элемент, содержащий его, как корневой элемент компиляции и инициализирует модуль, указанный в его значении. За этим следуют три следствия:
- Только первый
ng-appНа странице автоматически используется Bootstrap. Второй элемент игнорируется, если...angular.bootstrapвызывается вручную. - В качестве значения необходимо указать модуль, зарегистрированный в системе. угловой.модуль, в противном случае консоль сообщит
[$injector:modulerr]. - Размещение
ng-appнаhtmlКак показано в примере, этот элемент интегрирует весь документ в AngularJS; более узкий контейнер тоже подойдет.
Как работают выражения {{ }} и привязка ng-model
Двойные скобы вокруг message В теге h1 текст не является заполнителем, заполняемым только при загрузке страницы. AngularJS компилирует этот текстовый узел в наблюдатель за окружающими элементами. сфера, поэтому полученный результат tracks $scope.message до тех пор, пока существует эта страница.
Цикл состоит из трех этапов.
- Контроллер записывает значение в
$scope. - В ходе дайджест-прохода каждое отслеживаемое выражение сравнивается с его предыдущим результатом.
- Каждое выражение, значение которого изменилось, отображается заново на своем месте.
Таким образом, интерполированное выражение является односторонним, от области видимости к области действия. Двусторонняя привязка требует нг-модель, Директивы предназначен для элементов управления формами. Добавить <input ng-model="message"> Рядом с заголовком введите текст в поле, и заголовок будет меняться при каждом нажатии клавиши, поскольку ng-model записывает значение поля обратно в то же свойство области видимости, за которым следит выражение.
Выражения намеренно ограничены. Они считывают свойства области видимости, вызывают методы области видимости и молча допускают неопределенные значения, но при этом не могут объявлять переменные, использовать операторы управления потоком выполнения или обращаться к глобальным объектам, таким как window.
Как исправить пустую страницу или неотображаемый {{ }}
Первая попытка запуска программы на AngularJS завершается с ошибкой одним из двух видимых способов: страница остаётся пустой или отображается только текст. {{message}} появляется там, где должно быть "Hello World". Оба варианта означают, что фреймворк так и не перехватил разметку. Выполните проверки ниже по порядку, открыв консоль браузера.
- Подтвердите загрузку библиотеки. Откройте панель «Сеть» и найдите...
angular.jsЗапрос. Ошибка 404 или недоступность CDN не оставляют скобки на экране без изменений. - Проверьте путь к скрипту. Относительный путь разрешается относительно папки, содержащей HTML-файл, поэтому копия в
jsподпапка нуждаетсяjs/angular.min.js. - Проверьте ng-app. Отсутствие или орфографическая ошибка в атрибуте означает, что ничего не запускается. Атрибут пишется через дефис как
ng-appв разметке, даже несмотря на то, что директива написана в стиле Camel Case. JavaСценарий. - Прочитайте сообщение об ошибке в консоли.
[$injector:modulerr]Это означает, что модуль, указанный в ng-app, никогда не был зарегистрирован.[ng:areq]Обычно это означает, что имя контроллера в разметке не совпадает с именем, переданным в функцию..controller(). - Поищите второй ng-app. Только первый элемент использует Bootstrap, поэтому лишняя копия, оставленная на внутреннем элементе, незаметно отключает эту часть страницы.
Еще две причины объясняют большую часть оставшихся сообщений.
- Протокол файла. Этот пример с одним файлом отлично работает при открытии непосредственно с диска, но любой шаблон, загруженный через XHR, блокируется правилами источника браузера. После появления шаблонов переведите папку на HTTP-сервер.
- Кратковременный проблеск брекетов. Когда разметка отображается до того, как фреймворк её скомпилирует, исходное выражение становится видимым на мгновение.
ng-cloakк элементу или поменяйте выражение дляng-bind="message", которая никогда не отображает свою собственную разметку.
Если ни один из этих вариантов не подходит, сократите страницу до приведенного выше примера и добавляйте свой код по одной строке за раз.


