кодесурса
«Угловое

Введение в модули

script1adsense2code
script1adsense3code

Приложения Angular являются модульными по умолчанию, и Angular был построен с собственной системой модульности, называемой NgModules .

NgModules - это контейнеры для связного блока кода, предназначенного для домена приложения, рабочего процесса или тесно связанного набора возможностей. Они могут содержать компоненты, поставщиков услуг и другие файлы кода, область действия которых определяется содержащим NgModule. Они могут импортировать функциональные возможности, экспортируемые из других NgModules, и экспортировать выбранные функциональные возможности для использования другими NgModules.

Каждое приложение Angular имеет по крайней мере один класс NgModule, корневой модуль, который обычно называется AppModule и находится в файле с именем `app.module.ts`. Ваше приложение Angular запускается загрузкой корневого NgModule.

Метаданные NgModule

NgModule определяется классом, украшенным @NgModule (). Декоратор @NgModule () - это функция, которая принимает один объект метаданных, свойства которого описывают модуль. Наиболее важные свойства заключаются в следующем.

  • объявления: компоненты, директивы и каналы, которые принадлежат этому NgModule.
  • экспорт: подмножество объявлений, которые должны быть видны и использоваться в шаблонах компонентов других NgModules.
  • import: Другие модули, чьи экспортированные классы необходимы шаблонам компонентов, объявленным в этом NgModule.
  • провайдеры: создатели услуг, которые этот NgModule вносит в глобальный набор услуг; они становятся доступными во всех частях приложения. (Вы также можете указать поставщиков на уровне компонентов, что часто является предпочтительным.)
  • bootstrap: основное представление приложения, называемое корневым компонентом, в котором размещены все остальные представления приложения. Только корневой NgModule должен устанавливать свойство bootstrap.

Ниже приведен фрагмент кода, иллюстрирующий простое определение корневого NgModule.

Код TypeScript:

src/app/app.module.ts;
content_copyimport { NgModule }      from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
@NgModule({
  imports:      [ BrowserModule ],
  providers:    [ Logger ],
  declarations: [ AppComponent ],
  exports:      [ AppComponent ],
  bootstrap:    [ AppComponent ]
})
export class AppModule {
}

Демонстрация в реальном времени:

См. Перо Простое определение корневого NgModule. по w3resource ( @ w3resource ) на CodePen .


В приведенном выше фрагменте кода AppComponent включен в список экспорта только для иллюстрации; это на самом деле не нужно в этом примере. Это потому, что у корневого NgModule нет причин экспортировать что-либо, потому что другим модулям не нужно импортировать корневой NgModule.

NgМодули и компоненты

NgModules ускоряет компиляцию своих компонентов. Корневой NgModule всегда имеет корневой компонент, который создается во время начальной загрузки, во время разработки любой NgModule может содержать любое количество компонентов в зависимости от вашего дизайна.

Эти компоненты могут быть загружены через маршрутизатор или созданы с помощью шаблона. Компоненты, которые принадлежат NgModule, имеют общий контекст компиляции.

Диаграмма ниже иллюстрирует взаимосвязь между компонентами и модулями NgModules.


Представления определяются компонентом и его шаблоном. Компонент может содержать иерархию представлений, которая позволяет вам определять произвольно сложные области экрана, которые можно создавать, изменять и уничтожать как единое целое. Иерархия представления может смешивать представления, определенные в компонентах, которые принадлежат различным модулям NgModules. Эта комбинация компонентов в иерархии представлений иллюстрируется

диаграмма ниже:


Когда компоненты создаются, они напрямую связываются с одним представлением, называемым представлением хоста. Представление хоста может быть корнем иерархии представлений, которая может содержать встроенные представления, которые, в свою очередь, могут быть представлениями узлов других компонентов. Эти компоненты могут находиться в одном и том же модуле NgModule или могут быть импортированы из других модулей NgModule.

При вложении видов дерево вложенности может быть вложено на любую глубину, в зависимости от того, чего вы хотите достичь.

Модули Ng и модули JavaScript

Когда сравниваются модули NgModule и JavaScript (ES2015), мы обнаружили, что система NgModule отличается от системы модулей JavaScript (ES2015) для управления коллекциями объектов JavaScript и не связана с ней.

Это дополнительные модульные системы, которые вы можете использовать вместе для написания своих приложений. В JavaScript каждый файл является модулем, и все объекты, определенные в файле, принадлежат этому модулю. Модуль объявляет некоторые объекты общедоступными, помечая их ключевым словом экспорта. Другие модули JavaScript используют операторы импорта для доступа к публичным объектам из других модулей. Примеры импорта и экспорта JavaScript проиллюстрированы в следующем примере.

Код TypeScript:

import { NgModule }     from '@angular/core';
import { AppComponent } from './app.component';
export class AppModule {
}

Демонстрация в реальном времени:

См. Пример пера JavaScript для импорта и экспорта с помощью w3resource ( @ w3resource ) в CodePen .


Угловые библиотеки

Angular использует коллекцию модулей JavaScript. Вы можете думать о них как о библиотеках. Каждое имя библиотеки Angular начинается с префикса @angular. Библиотеки устанавливаются с помощью Node Package Manager (NPM) и импортируются с помощью оператора импорта JavaScript.

Например, чтобы импортировать Angular Component decorator из библиотеки @ angular / core, мы говорим:

`import {Component} from '@angular/core';`

Вы также импортируете NgModules из библиотек Angular, используя операторы импорта JavaScript. Например, следующий код импортирует модуль BrowserModule NgModule из библиотеки платформы браузера.

`import {BrowserModule} from '@angular/platform-browser';`

Чтобы получить доступ к данным из импортированных модулей, нам нужно добавить импортированные библиотеки в импорт метаданных @NgModule, как показано ниже:

Код TypeScript:

@NgModule({
  imports:[ BrowserModule ],
})

Демонстрация в реальном времени:

См. Перо Добавление импортированной библиотеки в метаданные @NgModule с помощью w3resource ( @ w3resource ) в CodePen .


Таким образом, вы используете вместе модульные системы Angular и JavaScript. Хотя легко спутать две системы, которые имеют общий словарь «импорт» и «экспорт», вы познакомитесь с различными контекстами, в которых они используются.

Предыдущая: Пользовательский ввод
Далее: Синтаксис шаблона

Новый контент: Composer: менеджер зависимостей для PHP , R программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code