angular10完全解读,angular10 新功能

  angular10完全解读,angular10 新功能

  本文告诉你angular10中的模块,介绍模块组成、ngModule属性、常用模块、angualr模块和js模块的区别、模块的惰性加载。让我们一起来看看它们。

  

模块概述

   NgModule模块是Angular的一个重要点,因为Angular的基本积木就是NgModule。NgModule会将相关代码(组件、指令、服务)收集到一些功能集中,形成功能单元。可以说,该模块为组件、指令和服务提供了编译后的上下文。【相关教程推荐:《angular教程》】

  当使用Angular CL命令创建一个新项目时,会为我们生成一个名为AppModule的根模块。根模块有一个根组件AppComponent,应用程序可以通过引导这个根模块来启动。角度应用是模块化的。在开发中,我们会根据其功能和特点构建大大小小的各种模块,从而将其构建成一个应用程序,任何模块都可以包含任意数量的其他组件。

  

模块构成(基础,掌握)

   angular module是一个带有@ngModule () decorator的类,它接受元数据对象。此对象的属性用于描述模块。

  声明:声明组件、指令、管道导入:引入依赖项导出:导出模块提供者:服务注册引导:从 @ angular/platform-browser 指定主机组件导入{ browser module };

  //从主模块导入NgModule(模块装饰器或模块注释)

  从“@angular/core”导入{ ng module };

  //引入组件,因为模块为组件提供了编译后的上下文。

  从“”导入{ AppComponent }。/app . component ;

  //介绍路由模块

  从“”导入{ AppRoutingModule }。/app-routing . module ;

  //Decorator将元数据声明为json

  @NgModule({

  //组装模块的组件和管道

  声明:[ AppComponent ],

  //模块依赖关系

  导入:[浏览器模块,批准模块],

  //子模块可以输入导出的模块。

  进口:[],

  //模块提供的服务

  提供商:[],

  //指定宿主组件,它只出现在根模块中

  引导:[AppComponent]

  })

  类appmodule {}:

ngModule 属性解释(理解)

  。输入@NgModule () decorator的类。我们可以看到它有以下属性以及官方对其属性的解释。

  导出声明接口NgModule {

  提供商?提供程序[];//此模块贡献给全局服务的那些服务的创建者。这个应用程序的任何部分都可以使用这些服务。(您还可以在组件级别指定服务提供者,这通常是首选方式。)

  申报?ArrayTypeany any[];//属于这个NgModule的那些组件、指令和管道

  进口?ArrayTypeany ModuleWithProviders { } any[];//导出该模块中组件模板所需的类的其他模块。

  出口?ArrayTypeany any[];//可以在其他模块的组件模板中使用的可声明对象的子集

  入口组件?ArrayTypeany any[];

  自举?ArrayTypeany any[];

  图式?arrayschemayetadata any[];

  }

属性的详细解释

  providers:提前在这里定义注入到本模块组件中的所有服务,否则在本模块中使用该服务时会有错误提示。

  declaration:声明是指英文的声明。在这里,声明一些组件、指令、管道等。在某些模块中使用。

  imports:导入一些模块。比如我把所有的指令做成一个模块。当我使用其中一些时,我可以选择导入整个指令模块。您还可以导入通过npm install安装的一些模块,并在使用它们之前导入它们。

  exports:导出组件或指令管道等。以便引用此模块的模块可以使用此模块的组件或指令管道等。

  exporyComponents: EntryComponent表示角度的入口组件。可引导组件是一个门户组件,Angular会在引导过程中将它加载到DOM中。其他入口组件在其他时间动态加载。字面意思,但是什么时候可以用?例如,如果我想弹出一个组件,那么这个组件将被动态加载到DOM中。这个时候我需要写这个组件xxxComponent。

  bootstrap:该模块启动时应该启动的组件。上面的代码显示AppModule是作为根模块的启动组件。

  schemas:不属于Angular的组件或指令的元素或属性需要在此声明。

  

常用模块(基础,掌握)

   NgModule导入使用Browser module @ Angular/Platform-Browser当您要在浏览器中运行应用程序时,CommonModule@angular/common当您要使用NgIf和NgFor时,FormsModule@angular/Forms当您要构建模板驱动的表单(它包含ng模型)时,ReactiveFormModule @ Angular/Forms当您要构建响应式表单时,RouterModule@angular/router需要使用路由功能,您需要使用RouterLink。http client Module @ angular/common/http当你想和服务器通话时

如何创建一个模块(基础,掌握)(未完待续)

  ng生成模块模块名//创建一个模块

  通用模块名称//缩写

  通用订单//创建订单模块

  通用订单流程//创建一个订单模块,流程为

angualr模块和js模块有什么区别?(了解)

  js模块(ES6 中的模块)

  该模块的功能主要由两个命令组成:导出和导入。export命令用于指定模块的外部接口,import命令用于输入其他模块提供的功能。

  一般来说,模块是一个独立的文件,文件内部的所有变量都无法从外部获取。如果您希望外部能够读取模块内部的变量,您必须使用export关键字来输出变量。

  //profile.js

  export var firstName= Michael

  export var lastName= Jackson

  出口var年份=1958;

  //优先写下面

  var firstName= Michael

  var lastName= Jackson

  var年份=1958年;

  export {firstName,lastName,year}export命令不仅可以导出变量,还可以导出函数和类。

  函数a () {.}

  函数b () {.}

  导出{

  一,

  ASB _//通过as关键字重命名外部接口

  }使用export命令定义模块的外部接口后,其他js文件可以通过import命令加载模块。

  //main.js

  从导入{名字,姓氏,年份}。/profile . js ;

  函数集名称(元素){

  element . text content=first name last name;

  }import命令接受一对花括号,花括号指定要从其他模块导入的变量名。花括号中的变量名必须与导入模块的外部接口名(profile.js)相同。

  我们也可以重命名加载的模块。

  从导入{ lastName as surname }。/profile . js ;除了指定加载输出值之外,还可以使用全局加载,即使用星号(*)指定加载所有输出值的对象。

  //圈子. js

  导出功能区(半径){

  回归数学。PI *半径*半径;

  }

  导出功能周长(半径){

  返回2 *数学。PI *半径;

  }

  //使用

  从导入*作为圆。/circle ;

  console . log( circle area: circle . area(4));

  console . log( circle circumference: circle . circle reference(14))这里有一点需要注意。模块作为一个整体加载的对象(上面例子中的圆)应该是静态分析的,所以不允许在运行时改变。不允许使用以下书写方法。

  从导入*作为圆。/circle ;

  //不允许以下两行

  circle.foo= hello

  circle . area=function(){ };angualr模块

  文章开头介绍了Anger模块(Anger模块概述和Anger模块组成)

  NgModule 类 与 JavaScript 模块有下列关键性的不同:

  NgModule只绑定到可声明的类,这些类只由Angular编译器使用。与JavaScript类不同,NgModule将其所有成员类放在一个巨型文件中,只需在其@NgModule.declarations列表中列出该模块的类即可。NgModule只能导出可声明的类。它可能是自己拥有的,也可能是从其他模块导入的。它不声明或导出任何其他类型的类。与JavaScript模块不同,NgModule可以通过在@NgModule.providers列表中添加服务提供者来扩展整个应用程序。相比之下,我们可以看到NgModule模块更加灵活,可扩展性和优势。

  

模块懒加载

  如果我们将所有模块导入到根模块中,那么应用程序在最初加载时会非常慢。这时候我们就要考虑使用懒加载了。根据需求加载相应的模块,减少应用初始化包的大小和加载时间,提高用户体验。

  惰性模块以此模块拥有路由模块为特征。因此,我们在上面创建了一个订单模块,并将路由添加到订单模块中。然后在user.module模块下创建一个user.module和一个list组件.

  通用用户路由//创建用户模块

  G c用户/列表-跳过-测试//在用户模块中创建一个组件列表

创建order和user两个模块,list一个组件

  !-订单模块订单模块-

  从“@angular/core”导入{ ng module };

  从“@angular/common”导入{ common module };//为一些结构指令提供支持

  从“”导入{ OrderRoutingModule }。/order-routing . module ;//模块有自己的路由。

  从“”导入{ ListComponent }。/list/list . component ;//引入列表组件

  @NgModule({

  声明:[ListComponent],

  进口:[

  CommonModule

  OrderRoutingModule

  ]

  })

  导出类别订单模块{ }配置子路由

  !- order-routing.module对应于订单模块的路由模块-

  从“@angular/core”导入{ ng module };

  从“@angular/router”导入{ Routes,router module };

  从“”导入{ ListComponent }。/list/list . component ;

  Const routes: Routes=[//子路由的组件配置

  {

  路径:“列表”,

  组件:列表组件

  },

  ];

  @NgModule({

  imports:[router module . for child(routes)],

  导出:[RouterModule]

  })

  导出类orderroutingmodule {用户模块}等等。

  配置总路由(重点,掌握)

  !-批准模块根路由模块-

  从“@angular/core”导入{ ng module };

  从“@angular/router”导入{ Routes,router module };

  Const routes: Routes=[//根路由的配置

  {

  路径:“订单”,

  Loadchildren:“”。/order/order . module # order module //配置订单子模块

  },

  {

  路径:“用户”,

  Loadchildren:“”。/user/user . module # user module //配置用户子模块

  }

  ];

  @NgModule({

  导入:[RouterModule.forRoot(routes)],

  导出:[RouterModule]

  })

  我们给app.component.html添加了两个按钮。

  !-下面的内容只是占位符,可以替换。-

  div style=text-align:center

  氘

  欢迎使用{{ title }}!

  /h2

  /div

  按钮routerlink=/user/list 用户/按钮//路由跳转

  按钮路由器Link=/order/listorder/button

  路由器出口/路由器出口惰性加载模块有什么好处呢?

  大项目往往模块很多,而且很大。如果一个模块是1m,我们在浏览器里输入地址打开这个应用的话,瞬间加载100m是非常慢的,也不用用这100个模块。

  将系统业务拆分为各个模块,划分好界限。按需加载,我点击用户加载用户模块,页面出现用户列表对用户进行操作。只有在我需要用的时候,极大的减少了页面初始加载的时间以及减少了资源的消耗

  

模块共享

  共享模块,顾名思义,在所有模块之间共享。首先定义这个模块的具体功能特征,比如指令、流水线、组件等。并将它们打包成模块。哪些业务模块需要使用它们的功能,可以导入到它们的模块中。

  这是一个巨大的规范了系统的统一性和降低了以后的维护成本

  如果引入第三方UI,不要把UI导入共享模块再导出,这样你的共享模块会越来越大。别人UI框架设计的初衷是按需加载。你把UI组件放到共享模块里,加载那些不相关的UI组件,会浪费很多性能。

  有关编程的更多信息,请访问:编程视频!以上是了解angular10模块相关概念,快速上手!更多详情请关注我们的其他相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: