Angular 應用是模塊化的,並且Angular有自己的模塊系統,它被稱爲Angular模塊或者NgModules.
每一個Angular應用至少有一個模塊------根模塊,有可能會從根模塊重構出一些其他特定的模塊。特性模塊用來實現一組密切相關的功能,然後我們在根模塊中導入它們。
Angular模塊都是帶有@NgModule裝飾器的類,是用來修飾javascript的。Angular模塊是用@NgModule定義應用中的模塊。
NgModule是一個裝飾器,用來接收一個用來描述模塊屬性的元數據對象,該對象告訴Angular如何編譯和運行模塊代碼。
擁有幾點比較重要的屬性:
declarations(聲明):本模塊中擁有的視圖類。Angular有三種視圖:組件,指令,管道。
exports:declarations的子集,它可用於其他模板中的組件,模板。
imports:本模板組件模板中需要由其他版本導出的類。BrowerModule模塊是每個運行在瀏覽器的應用都必須要導入它。
providers:服務的創建者。本模塊把它們加入全局的服務表中,讓它們在應用中的任何部分都能被訪問到。
bootstrap:標識出應用的主視圖,它是所有其他視圖的宿主。只有根模塊才能設置bootstrap屬性。
講述下angular模塊和javascript模塊的區別:
Angular模塊(一個用@NgModule裝飾的類)是Angular的基礎特性。
JavaScript 也有自己的模塊,
它用來管理一組Javascript對象,每一個文件就是一個模塊,並且該文件中定義的所有對象都屬於那個模塊。通過export關鍵字,模塊可以把它的某些對象聲明爲公開。別的javascript模塊中可以使用import語句來訪問這些公開對象。
模塊庫的概念:
angular2.0發佈了一組javascript模塊。每個angular庫的名字都帶有@angular前綴。
可以採用npm包管理工具去安裝它們,並用javascript的import語句導入它們的某些部件。
很多Angular庫都是模塊,比如:FormsModule,HttpModule,RouterModule。許多第三方的庫也封裝成了Angular模塊,
比如:Material Design,lonic,AngularFire2.
模塊可能在應用啓動時主動加載,也可能由路由器進行異步惰性加載。