В моей первой статье мы говорили о настройке рабочей среды для использования Angular 2, и поэтому важно выполнить эти шаги, прежде чем переходить к следующим шагам в этой статье. Если вы пропустили первую статью, вы всегда можете перейти сюда или следовать официальному руководству, если вы хотите установить Angular 2.0.
Давайте для начала создадим что-то действительно простое и базовое, только потому, что очень важно понимать все шаги. Затем мы можем перейти к чему-то, что требует дополнительной работы, например, к созданию приложения с использованием всех операций CRUD, подкомпонентов, служб, каналов, директив, с использованием внедрения зависимостей, структурных директив, интерполяции, привязки свойств, привязки событий, объявлений переменных, форм. , маршрутизация и т. д. и т. д.
Ссылки по теме:
Вы можете загрузить код, обсуждаемый в этом блоге, с моего GitHub.
Шаги:
- Поехали! - Наш первый компонент
- Загрузка приложения
- Создание index.html
- Запуск нашего первого компонента
1. Пойдем! - Наш первый компонент
Если у вас есть рабочая среда уже настроена, ваш проект должен выглядеть так:
Как видите, у нас есть настроенный проект; Я использую Visual Studio Code. Теперь мы готовы создать наш первый простой компонент. Для этого создайте новый файл с именем app.component.ts.
Важно иметь некоторые знания о машинописном языке, и лучшее место для получения этих знаний - здесь.
Что такое компонент?
Компонент - это комбинация представления (шаблона) и некоторой логики (расширение нашего класса Typescript .ts)
Давайте сначала создадим класс внутри нашего app.component.ts:
export class AppComponent { constructor() {} }
Все классы в TypeScript имеют конструктор, независимо от того, указываете вы его или нет. Если вы не определите конструктор, компилятор автоматически добавит его. Конструктор вызывается перед обработкой жизненного цикла любого другого компонента. Если у компонента есть какие-либо зависимости, конструктор - лучшее место для внедрения этих зависимостей. Оператор export сообщает TypeScript, что это модуль, чей класс AppComponent является общедоступным и доступен для других модулей приложения.
Подробнее о крючке жизненного цикла в Angular 2.
В Angular 2 компоненты - это основной способ создания и определения элементов и логики на странице, в то время как в Angular 1 мы можем добиться этого с помощью контроллеров и scope; с помощью Angular 2 все эти концепции объединены в Компоненты. Компоненты расположены иерархически, поэтому приложения Angular 2 всегда начинаются с одного основного компонента.
Чтобы определить для Angular, что есть компонент, мы используем декоратор @Component, и чтобы иметь возможность его использовать, мы должны его импортировать:
import {Component} from 'angular2/core'; @Component() export class AppComponent{ constructor() {} }
Декоратор @Component принимает требуемый объект конфигурации с информацией, необходимой Angular для создания и представления компонента и его представления.
…. мы еще не закончили!
Декоратор @Component ожидает только одно свойство с именем selector. Селектор сообщает Angular, что искать на страницах HTML. Каждый раз, когда селектор находится в HTML, Angular заменяет его нашим компонентом. Давайте добавим селектор к нашему компоненту:
import {Component} from 'angular2/core'; @Component({ selector: 'main-app' }) export class AppComponent{ constructor() {} }
Каждый раз наш HTML-код содержит такой элемент, как:
‹main-app› ‹/main-app›
… .Angular создаст новый экземпляр класса AppComponent.
… .и он еще не закончен!
Ранее мы говорили…
«Компонент - это комбинация представления (шаблона)»
Итак, компонент должен иметь шаблон, в который вы можете встроить его, или мы можем вынести этот шаблон в другой файл (используя templateUrl), но пока давайте не будем усложнять .
import {Component} from 'angular2/core'; @Component({ selector: 'main-app', template: '<h1>Hiya! First Component</h1>' }) export class AppComponent { constructor() {} }
Мы сообщаем Angular, что AppComponent является компонентом, прикрепляя метаданные к классу, а метаданные сообщают Angular, как обрабатывать класс.
2. Начальная загрузка приложения и загрузка компонентов.
Метод начальной загрузки (доступный в Angular 2) - это тема, о которой сейчас нужно слишком долго писать, поэтому на этом этапе мы будем упрощать задачу. Более подробно обращаюсь к этой теме здесь.
Нам нужно запустить наше приложение, и метод начальной загрузки поможет нам выполнить эту работу. Мы должны импортировать его из модуля angular2 / platform / browser, используя другое местоположение (например, не angular2 / core), потому что Angular 2 поддерживает рендеринг на стороне сервера или запуск в Веб-воркер. Давайте создадим новый файл с именем: boot.ts, чтобы отделить логику начальной загрузки.
import {bootstrap} from 'angular2/platform/browser'; import {AppComponent} from './app.component'; bootstrap(AppComponent) .then (success => console.log('Bootstrap successfully!')) .catch(err => console.log(err));
Немного предыстории…
Метод начальной загрузки - это объект обещания, и первый параметр, который мы определяем, - это основной класс нашего приложения - компонент; поэтому нам пришлось импортировать {AppComponent} из './app.component'.
Нам удалось импортировать этот класс, потому что мы использовали ключевое слово 'export', которое делает класс общедоступным для всего проекта. Согласно приведенному выше примеру, в скобках {} - это имя нашего класса, а from '' - это место, где находится файл этого класса. Поскольку у нас есть все файлы в главном корне, нам не нужно включать какую-либо папку или подпапку, чтобы найти компонент (например: ‘. /App/app.component’). На данный момент нам не нужно беспокоиться о структуре папок, потому что это базовый пример; однако второй параметр метода начальной загрузки - это то место, где у нас может быть массив, содержащий список того, что мы хотим сделать доступным для внедрения.
Оператор import сообщает системе, что она может получить компонент приложения из модуля namedapp.component, расположенного в соседнем файле. Имя модуля (идентификатор модуля AKA) часто совпадает с именем файла без его расширения.
3. Создание index.html
Создайте еще один файл с именем: index.html и добавьте следующий html:
<html> <head> <script src="node_modules/angular2/bundles/angular2-polyfills.js"></script> <script src="node_modules/systemjs/dist/system.js"></script> <script> System.config({ defaultJSExtensions: true, map: { 'angular2': 'node_modules/angular2', 'rxjs': 'node_modules/rxjs' } }); System.import('built/boot'); </script> </head> <body> <main-app>Loading…</main-app> </body> </html>
В Angular 1.x добавление скриптов к нашим HTML-файлам было простым, нам просто нужно было добавить скрипт для angular.js и скрипт для каждого написанного нами JS-файла. Angular 2 объединен в модули, и эти модули можно загружать динамически. Чтобы загрузить наш модуль, мы используем инструмент SystemJS, который представляет собой небольшой загрузчик модулей. Мы добавили его статически в наш HTML, и он сообщает, где расположены модули на нашем сервере. Затем он автоматически определяет зависимости между модулями и загружает используемые из нашего приложения.
System.import('built/boot');
'build / boot' - указывает, где находится наш boot.js, и если вы не меняли свой tsconfig.json, у вас не должно быть любые проблемы с загрузкой файла JS.
4. Запускаем наш первый компонент
Мы почти закончили! Ура! Нам нужно только запустить наш первый компонент с использованием Angular 2.
Откройте cmd (командную строку), перейдите в каталог проекта и введите: npm run app.
Перед загрузкой скриптов вы должны увидеть «Загрузка…»
… А затем в приложении должно появиться сообщение «Hiya! Первый компонент »
Если вы откроете инструменты разработчика в браузере, вы увидите сообщение console.log («Bootstrap успешно»)…