当前位置: 首页 > Web前端 > CSS

Angular2模块介绍

时间:2023-03-30 23:32:39 CSS

Angular2模块介绍NgModule介绍Angular应用程序是模块化的,而NgModule我们可以将它用作存储一些内聚代码块的容器,它接收一个元数据对象并通过该对象告诉Angular如何编译和运行模块代码.它标记模块拥有的组件、指令和管道,并公开其中的一些,以便外部组件可以使用它们。它可以将服务提供者添加到应用程序的依赖注入器。每个Angular应用程序至少有一个NgModule类,即根模块,通常命名为AppModule并位于一个名为app.module.ts的文件中。引导此根模块以启动您的应用程序。NgModule元数据NgModule是一个带有@NgModule()装饰器的类。@NgModule()装饰器是一个接受元数据对象的函数,该元数据对象的属性描述了模块。这些属性中最重要的如下。declarations(tableofdeclarableobjects)-那些属于这个NgModule的组件、指令、管道。exports-可声明对象的子集,可在其他模块的组件模板中使用。imports-导出该模块中组件模板所需的类的那些其他模块。提供者——该模块为全球服务做出贡献的那些服务的创建者。这些服务可由该应用程序的任何部分使用。(您也可以在组件级别指定服务提供者,这通常是首选方式。)bootstrap-应用程序的主视图,称为根组件。它是应用程序中所有其他视图的宿主。只有根模块应该设置这个引导属性。通俗地说:声明哪些组件、指令、流水线属于模块;公开某些类,以便其他组件模板可以使用它们;导入其他模块,从其他模块获取本模块所需的组件、指令、流水线;在应用程序级别提供服务,以便应用程序中的任何组件都可以使用它。如:import{BrowserModule}from'@angular/platform-b??rowser';从'@angular/platform-b??rowser/animations'导入{BrowserAnimationsModule};从'@angular/core'导入{NgModule};从'@angular/http'导入{HttpModule,Http};从'@angular/router'导入{RouterModule};从'./app.routes'导入{appRoutes};从'./appcontent/appcontent导入{AppcontentModule}.module';import{AppComponent}from'./app.component';import{CommonService}from'./shared/common.service';@NgModule({declarations:[AppComponent],imports:[BrowserModule,BrowserAnimationsModule,HttpModule,RouterModule.forRoot(appRoutes),AppcontentModule],providers:[CommonService],bootstrap:[AppComponent]})exportclassAppModule{}Featuremodules我们一般把其他自定义的模块称为featuremodules。随着应用的扩展,所有事情都集中在一个模块里,难免会乱七八糟。我们会考虑将系统分成多个模块。每个模块只做自己的事情,互不干扰。使用根模块引导并管理所有子模块,即由路由引导,并为它们提供全局配置和服务实例。实现如下:根模块负责全局路由。核心模块负责全局服务,也可以定义一些只在根模块中使用的组件等,根模块只能导入一次,不会导出。共享模块不提供服务,而是定义全局共享组件等,帮助子模块导入系统模块,让子模块只需要导入这个共享模块即可。在子模块内部,可以将自己的子路由细分为具体的子组件,提供自己的服务。除了页面入口模块(即根模块之外的具体业务模块),其他子模块都考虑写成懒加载模块,以提高页面启动速度,减少性能浪费。当你需要一个更通用的全局服务时,你可以将它添加到CoreModule中,或者创建一个仅由根模块导入的特性模块。此外,这个模块甚至可以发布到npm,这需要更强的编码能力和技术积累。Angular2模块的目录和目录结构一般如下:每个模块应该有一个单独的文件夹。模块中的功能相关或相似。每个模块最好有一个单独的路由定义。