Module Component
(一)Angular應(yīng)用是模塊化的,并且Angular有自己的模塊系統(tǒng)凯正,它被稱為Angular模塊或者NgModules
(二)每個Angular應(yīng)用至少有一個模塊(根模塊)毙玻,習(xí)慣上命名為AppModule
根模塊在一些應(yīng)用中可能是唯一的模塊,不過大多數(shù)應(yīng)用可能會有很多的特性模塊廊散,它們由一組領(lǐng)域列類桑滩、工作域允睹、或緊密相關(guān)的功能聚合而成。
(三)Angular模塊(無論是根模塊還是特性模塊)都有一個帶有@NgModule裝飾器的類胁澳。
(四)裝飾器是用來裝飾JavaScript類的函數(shù),Angular有很多裝飾器韭畸,它們負責(zé)把元數(shù)據(jù)附加到類上蔓搞。
NgModule是一個裝飾器函數(shù)胰丁,他用來接收一個用來描述模塊屬性的元數(shù)據(jù)對象喂分,其中,最重要的屬性是:
1)declaration(聲明)—本模塊中擁有的視圖類酸员,Angular有三種視圖類(組件、指令幔嗦、管道)
2)exports(聲明)的子集,它可用于其他模板的組件模板
- imports—本模板組件模板中需要由它模板導(dǎo)出的類
4)providers:服務(wù)的創(chuàng)建者邀泉,本模塊把他們計入全局的服務(wù)表中,讓他們在應(yīng)用中的任何部分都可訪問到庞钢。
5)bootstrap—標(biāo)示出應(yīng)用的主視圖(被稱為根組件)因谎,它是所有讓其他視圖的宿主。只有根模塊才能設(shè)置bootstrap屬性财岔。
下面是最簡單的根模塊:
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
@NgModule({
imports: [ BrowserModule ],
providers: [ Logger ],
declarations: [ AppComponent ],
exports: [ AppComponent ],
bootstrap: [ AppComponent ]
})
export class AppModule { }
AppComponent 的export語句只是用于演示如何導(dǎo)出的,他在這個例子中并無必要匠璧,根模塊不需要導(dǎo)出任何東西,應(yīng)為其他組件不需要導(dǎo)入根模塊魔眨。
(五)重點:
我們通過引導(dǎo)根模塊來啟動應(yīng)用酿雪,在開發(fā)期間遏暴,我們通常在一個main.ts文件中來引導(dǎo)APPModule,
代碼如下:
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { AppModule } from './app.module';
platformBrowserDynamic().bootstrapModule(AppModule);
(六)Angular模塊vs.JavaScript模塊
Angular模塊(一個用@NgModule)裝飾類是Angular的基礎(chǔ)特性拓挥。
JavaScript還有自己的模板系統(tǒng)袋励,它用來管理一組JavaScript對象侥啤,它和Angular的模塊體系是完全不同并且完全無關(guān)的茬故。
(七)在JavaScript中,每個文件就是一個模塊赁炎,并且該文件中定義的所有對象都叢屬于那個模塊,通過export關(guān)鍵字徙垫,模塊可以把它的某些對象聲明為公開的,別的JavaScript模塊中可以使用import語句來訪問這些公開對象
import { NgModule } from '@angular/core';
import { AppComponent } from './app.component';
export class AppModule { }
(八)模塊庫:
Angular發(fā)布了一組JavaScript模塊己英,我們可以把他們看成庫模塊吴旋。
每個Angular庫的名字都帶有@angular前綴。
我們可以用npm包管理工具安裝它們荣瑟,并且用JavaScript的import語句導(dǎo)入他們的某些組件。
比如笆焰,我們從@angular/core庫中導(dǎo)入Component裝飾器,就像這樣:
import { Component } from '@angular/core';
我們還使用JavaScript的導(dǎo)入語句從Angular中導(dǎo)入Angular的某些模塊同波。
import { BrowserModule } from '@angular/platform-browser';
(九)在上面這個關(guān)于根模塊的小例子中叠国,應(yīng)用模塊需要來自 BrowserModule
的某些素材戴尸。要訪問這些素材,我們就得把它加入 @NgModule
元數(shù)據(jù)的 imports
中去孙蒙,就像這樣:
imports: [ BrowserModule ],