Angular上路—基本概念—模块

196 阅读1分钟

NgModule

一个容器,存放专注于某个应用领域,某个工作流,一组紧密相关功能的代码块。
模块中包含一些组件、服务或其他代码文件,这些内容的作用域由NgModule定义。
模块可以导入其他模块导出的功能,可以导出功能供其他的NgModule使用。

根模块:AppModule。引导AppModule就可以启动应用,根模块可以包含任意深度的层次化子模块。

@NgModule元数据

NgModule的装饰器: @NgModule()

@NgModule({
  declarations: [           // (可选)声明属于当前NgModule 的组件、指令、管道
    AppComponent,
    HerosComponent
  ],
  imports: [                // 导入,当前模块导出时需要的其他模块
    BrowserModule,
    FormsModule
  ],
  exports:[],               // 能在其他模块中使用的功能
  providers: [],            // 本模块向全局服务中贡献的服务的创建器,这些服务能在应用的任何地方使用
  bootstrap: [AppComponent] // 应用主视图,即根组件,只有根模块才应该设置该属性
})

NgModule和组件

NgModule为组件提供编译上下文环境

截取自Angular官网

  • 根模块总会有根组件,引导期间创建
  • 任何模块都能包含任意数量的其他组件
  • 属于同一个NgModule的组件共享同一个编译上下文环境。ps:是不是理解为ClassLoader?
  • 一个视图层次结构中可以使用不同的NgModule中的组件定义的视图
    截取自Angular官网

视图的层次结构是Angular在DOM和应用数据中检测变更、响应变更时的关键因素

import & export

import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { HerosComponent } from './heros/heros.component';
import { DashboardComponent } from './dashboard/dashboard.component';
import { HeroDetailComponent } from './hero-detail/hero-detail.component';

export class AppRoutingModule { }

Angular 库的名称带有 @angular前缀