详解Angular根模块与特性模块


本文摘自PHP中文网,作者青灯夜游,侵删。

本篇文章带大家了解一下Angular中的特性模板和根模板。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。

前提是安装了 Angular cli,以下的大部分文件创建都是依赖于cli提供的指令

Angular中的特性模板和根模板(AppModule)

区别在于特性模板可以把应用划分,个人理解类似于组件化

1、特性模板创建的指令ng g module article ,这里使用的是ng g module article --routing,可以生成一个article-routing.module.ts路由文件

2、此时CLI会在app文件夹下再创建一个文件夹articlearticle文件夹下包含两个文件article.module.tsarticle-routing.module.ts

3、使用ng g component 生成两个组件,指定模板为article,指定的模板会自动导入到article.modules.ts中,并且注册到declarations数组,注意:不要删除declarations中注册的组件,不然会导致组件中部分指定无法使用

  • ng g component 说明
  • ng g component article/article-list -m=article ,在article文件夹下生成article-list文件夹组件
  • ng g component article/article-create -m=article ,在article文件夹下生成article-create文件夹组件

4、article.module.ts 在 CLI 生成的特性模块中,在文件顶部有两个 JavaScript 的导入语句:第一个导入了 NgModule,它像根模块中一样让你能使用 @NgModule 装饰器;第二个导入了 CommonModule,它提供了很多像 ngIfngFor 这样的常用指令。 特性模块导入 CommonModule,而不是 BrowserModule,后者只应该在根模块中导入一次。 CommonModule 只包含常用指令的信息,比如 ngIfngFor,它们在大多数模板中都要用到,而 BrowserModule 为浏览器所做的应用配置只会使用一次。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

import { NgModule } from '@angular/core';

import { CommonModule } from '@angular/common';

 

import { ArticleRoutingModule } from './article-routing.module';

import { ArticleListComponent } from './article-list/article-list.component';

import { ArticleCreateComponent } from './article-create/article-create.component';

 

 

@NgModule({

  declarations: [ArticleListComponent, ArticleCreateComponent],

  imports: [

    CommonModule,

    ArticleRoutingModule

  ]

})

export class ArticleModule { }

相关推荐:《angular教程》

5、article-routing.module.ts ,路由地址嵌套配置,这里的地址设置是因为在app-routing.module根路由模块中已经设置了当前模块的路由前缀为article,因此下面的路由都只用直接设置即可,访问时带上根路由设置的路由前缀。

  • 例如,根路由设置的是article,这里设置的是list,访问地址需要使用article/list在这里插入图片描述

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

import { NgModule } from '@angular/core'

import { Routes, RouterModule } from '@angular/router'

 

import { ArticleListComponent } from './article-list/article-list.component'

import { ArticleCreateComponent } from './article-create/article-create.component'

const routes: Routes = [

    {

        path: '',

        children: [

            {

                path: '',

                pathMatch:'full',

                redirectTo: '/article/list'

            },

            {

                path: 'list',

                component: ArticleListComponent

            },

            {

                path: 'create',

                component: ArticleCreateComponent

            }

        ]

    }

]

@NgModule({

    imports: [RouterModule.forChild(routes)],

    exports: [RouterModule]

})

export class ArticleRoutingModule {}

6、根模块app.mudles.ts,导入app-routing.module文件,可以配置全局的路由

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

import { HttpClientModule } from '@angular/common/http';

import { NgModule } from '@angular/core';

import { FormsModule } from '@angular/forms';

import { BrowserModule } from '@angular/platform-browser';

import { AppRoutingModule } from './app-routing.module'

 

import { AppComponent } from './app.component';

@NgModule({

  declarations: [

    AppComponent

  ],

  imports: [

    BrowserModule,

    FormsModule,

    HttpClientModule,

    AppRoutingModule

  ],

  providers: [],

  bootstrap: [AppComponent]

})

export class AppModule { }

7、根模块的路由app-routing.module.ts loadChildren是使用了惰性加载特性模块 默认情况下,NgModule都是急性加载的,也就是说它会在应用加载时尽快加载,所有模块都是如此,无论是否立即要用。对于带有很多路由的大型应用,考虑使用惰性加载 ―― 一种按需加载 NgModule的模式。惰性加载可以减小初始包的尺寸,从而减少加载时间。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

import { NgModule } from '@angular/core'

import { Routes, RouterModule } from '@angular/router'

import { LoginComponent } from './login/login.component'

const routes: Routes = [

    { path: 'login', component: LoginComponent },

    {

        path: 'article',

        loadChildren: () => import('./article/article.module').then((m) => m.ArticleModule)

    }

]

 

@NgModule({

    imports: [RouterModule.forRoot(routes)],

    exports: [RouterModule]

})

export class AppRoutingModule {}

8、最后如果想要访问article下面的listcreate路由在浏览器输入地址article/list

  • article/list

    在这里插入图片描述

  • 或者article/create

    在这里插入图片描述

更多编程相关知识,请访问:编程视频!!

以上就是详解Angular根模块与特性模块的详细内容,更多文章请关注木庄网络博客

相关阅读 >>

浅谈Angular模板指令:ng-template和ng-container的用法

聊聊Angular中的单元测试

如何搭建测试环境?Angular测试工具集介绍

浅谈Angular中插槽的用法

浅谈Angular路由跳转中的navigatebyurl和navigate

Angular如何创建服务?5种方式了解一下!

Angular cli是什么以及如何安装

浅谈一下Angular模板引擎ng-template

谈谈Angular模块的使用以及懒加载

13个关于Angular的前端面试题(总结)

更多相关阅读请进入《Angular》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...