NgModules 是建立在 ES Modules 概念上的更抽象一层的概念。它是对应用程序功能模块的一种抽象,每个应用程序至少要有一个 NgModule 作为启动用的。对于不大的应用来说一般只需要有一个 NgModule ,当应用程序不断扩大时,可以把不同特性的功能划分在不同的 NgModules 内,然后建立起相互引用的关系。
例如我们用 angular-cli 命令行产生的代码里的 AppModule
就是一个 Root NgModule , 然后从他启动应用程序
platformBrowserDynamic().bootstrapModule(AppModule)
下面是生成出来的一个最基本的 NgModule
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { AppComponent } from './app.component';
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
@NgModule.declarations
声明此 module 里包含的类 => include classes in the package
@NgModule.imports
引入其他 module 中的类型进来 => import classes from another package
- JavaScript 语言本身的模块 Module 其实起到的是 Collection 的作用,就像 Java 语言里的 Class File
- 而 JavaScript 源文件目录层级就像 Java 的 package,用于区分不同包
- 而 Angular NgModule 才可以表示更抽象层面的模块含义,包含不同功能的类,就像 Java 的 jar 包
Feature Modules
Projects
在代码层次 Angular 是通过 ngModules 组织代码的, 在项目级别 Angular 以 Project 的形式来划分代码结构. 一些可重复使用的代码可以被组织在一个 ngModule 里然后以独立的 Project 形式进行开发部署.
Angular project 是通过 Angular CLI 创建, 使用命令 ng generate library xxx
可以生成一个类型为 library 的 project, 类型 library 的项目是被 Angular Application 引用的可重复使用的代码组织.
Angular version numbers have three parts: major.minor.patch
Comments