Jadual Kandungan
一、Angular 内置模块
二、Angular 自定义模块
如何在根模块挂载 user 模块呢?
如何在根模块挂载 product 模块呢?
创建 user 模块下的服务
配置路由实现模 块懒加载
angular配置懒加载
1. 在app文件夹下 新建 app-routing.module.ts
2. 在子模块里配置路由
3. 在app的路由模块进行配置路由
配置子路由
Rumah hujung hadapan web tutorial js 谈谈Angular模块的使用以及懒加载

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

Sep 15, 2020 am 10:37 AM
angular Malas memuatkan modul

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

相关教程推荐:angularjs(视频教程)

一、Angular 内置模块

在这里插入图片描述

二、Angular 自定义模块

当我们项目比较小的时候可以不用自定义模块。但是当我们项目非常庞大的时候把所有的组 件都挂载到根模块里面不是特别合适。所以这个时候我们就可以自定义模块来组织我们的项 目。并且通过 Angular 自定义模块可以实现路由的懒加载。

ng g module mymodule
Salin selepas log masuk

在这里插入图片描述

新建一个 user 模块

ng g module module/user
Salin selepas log masuk

新建一个 user 模块下的根组件

ng g component module/user
Salin selepas log masuk

新建一个 user 模块下的 address,order,profile 组件

ng g component module/user/components/address
ng g component module/user/components/order
ng g component module/user/components/profile
Salin selepas log masuk

如何在根模块挂载 user 模块呢?

在 app 根组件的模板文件 app.component.html 里 引用 user 组件会报错
需要如下处理才可以被访问

  1. 在 app.module.ts 引入模块

在这里插入图片描述

  1. user 模块暴露出 要被外界访问到的组件
    在这里插入图片描述

  2. 在根模板 app.component.html 里引入

<app-user></app-user>
Salin selepas log masuk

如果需要在根组件里直接 使用 app-address 组件,也是需要先在 user 模块 user.module.ts 暴露

/暴露组件 让其他模块里面可以使用暴露的组件/
exports:[UserComponent,AddressComponent]

如何在根模块挂载 product 模块呢?

同上

创建 user 模块下的服务

  1. 创建
    ng g service module/user/services/common

  2. 在 user 模块引入服务
    user.module.ts

在这里插入图片描述

配置路由实现模 块懒加载

在这里插入图片描述

创建模块:

ng g module module/user --routing
ng g module module/article --routing
ng g module module/product --routing
Salin selepas log masuk

创建组件:

ng g component module/user
ng g component module/user/components/profile
ng g component module/user/components/order
ng g component module/article
ng g component module/article/components/articlelist ng g component module/article/components/info
ng g component module/product
ng g component module/product/components/plist
ng g component module/product/components/pinfo
Salin selepas log masuk

这里先以article为例讲解:

angular配置懒加载

在angular中路由即能加载组件又能加载模块,而我们说的懒加载实际上就是加载模块,目前还没有看到懒加载组件的例子。
加载组件使用的是component关键字
加载模块则是使用loadChildren关键字

1. 在app文件夹下 新建 app-routing.module.ts

内容如下:

import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
@NgModule({
  imports: [RouterModule.forRoot(routes)],
  exports: [RouterModule]
})
export class AppRoutingModule { }
Salin selepas log masuk

forRoot是用在根模块加载路由配置,
而forChild是用在子模块加载路由配置。

注意:需要在根模板 app.module.ts里导入AppRoutingModule模块

import { AppRoutingModule } from './app-routing.module';
...
imports: [
    AppRoutingModule,
]
Salin selepas log masuk

2. 在子模块里配置路由

在\module\article\article-routing.module.ts里配置路由

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

    // import {ArticleComponent} from './article.component';
    const routes: Routes = [
    // {
    //     path:'',
    //     component:ArticleComponent
    // }
    ];

    @NgModule({
    imports: [RouterModule.forChild(routes)],
    exports: [RouterModule]
    })
    export class ArticleRoutingModule { }
Salin selepas log masuk

也可以在新建项目的时候 就把路由的模块加上,可以省去上面的 配置

在 article模块的 article-routing.module.ts配置路由

.....

import {ArticleComponent} from './article.component';
const routes: Routes = [
  {
    path:'',
    component:ArticleComponent
  }
];

......
Salin selepas log masuk

3. 在app的路由模块进行配置路由

const routes: Routes = [
  {
    path:'article',
    //写法一:
    loadChildren:'./module/article/article.module#ArticleModule'

    //写法二
    // loadChildren: () => import('./module/user/user.module').then( m => m.UserModule)  
  },
  // {
  //   path:'user',loadChildren:'./module/user/user.module#UserModule'
  // },
  // {
  //   path:'product',loadChildren:'./module/product/product.module#ProductModule'
  // },
  {
    path:'**',redirectTo:'article'
  }
];
Salin selepas log masuk

如果在之前新建模块的时候没有加上–routing,,需要配置模块的路由

product模块
product的路由:module\product\product-routing.module.ts

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

import {ProductComponent} from './product.component';
const routes: Routes = [
  {
    path:'',
    component:ProductComponent
  }
];

@NgModule({
  imports: [RouterModule.forChild(routes)],
  exports: [RouterModule]
})
export class ProductRoutingModule { }
Salin selepas log masuk

product的模块:
module\product\product.module.ts

import { ProductRoutingModule } from './product-routing.module';

imports: [
    ProductRoutingModule
  ],
Salin selepas log masuk

user模块
user的路由: \module\user\user-routing.module.ts

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

import {UserComponent} from './user.component';
const routes: Routes = [
  {
    path:'',
    component:UserComponent
  }
];

@NgModule({
  imports: [RouterModule.forChild(routes)],
  exports: [RouterModule]
})
export class UserRoutingModule { }
Salin selepas log masuk

user的模块: \module\user\user.module.ts

import {UserRoutingModule} from './user-routing.module';  +

 imports: [
    UserRoutingModule   +
  ],
Salin selepas log masuk

RouterModule.forRoot() 和 RouterModule.forChild()

RouterModule对象为提供了两个静态的方法:forRoot()和forChild()来配置路由信息。

RouterModule.forRoot()方法用于在主模块中定义主要的路由信息,RouterModule.forChild()与 Router.forRoot()方法类似,但它只能应用在特性模块中。

即根模块中使用forRoot(),子模块中使用forChild()。

配置子路由

  1. 在商品模块的路由product-routing.module.ts 配置子路由
import { PlistComponent } from './components/plist/plist.component';
import { CartComponent } from './components/cart/cart.component';
import { PinfoComponent } from './components/pinfo/pinfo.component';

const routes: Routes = [
  {
    path:'',
    component:ProductComponent,
    children:[
      {path:'cart',component:CartComponent},
      {path:'pcontent',component:PinfoComponent}
    ]
  },
  {path:'plist',component:PlistComponent}
];
Salin selepas log masuk
  1. 在商品模块的模板product.component.html 添加router-outlet
<router-outlet></router-outlet>
Salin selepas log masuk
  1. 在页面app.component.html添加菜单,方便跳转
<a [routerLink]="['/product']">商品模块</a>
<a [routerLink]="['/product/plist']">商品列表</a>
Salin selepas log masuk

更多编程相关知识,可访问:编程学习课程!!

Atas ialah kandungan terperinci 谈谈Angular模块的使用以及懒加载. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Tag artikel panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Modul pengembangan WLAN telah berhenti [fix] Modul pengembangan WLAN telah berhenti [fix] Feb 19, 2024 pm 02:18 PM

Modul pengembangan WLAN telah berhenti [fix]

Modul kebolehlanjutan WLAN tidak boleh dimulakan Modul kebolehlanjutan WLAN tidak boleh dimulakan Feb 19, 2024 pm 05:09 PM

Modul kebolehlanjutan WLAN tidak boleh dimulakan

Bagaimana untuk memasang Angular pada Ubuntu 24.04 Bagaimana untuk memasang Angular pada Ubuntu 24.04 Mar 23, 2024 pm 12:20 PM

Bagaimana untuk memasang Angular pada Ubuntu 24.04

Komponen sudut dan sifat paparannya: memahami lalai bukan blok Komponen sudut dan sifat paparannya: memahami lalai bukan blok Mar 15, 2024 pm 04:51 PM

Komponen sudut dan sifat paparannya: memahami lalai bukan blok

Bagaimanakah Vue melaksanakan pemuatan malas dan pramuat komponen? Bagaimanakah Vue melaksanakan pemuatan malas dan pramuat komponen? Jun 27, 2023 pm 03:24 PM

Bagaimanakah Vue melaksanakan pemuatan malas dan pramuat komponen?

Penjelasan terperinci tentang fungsi malas dalam Vue3: Pemuatan malas komponen meningkatkan prestasi aplikasi Penjelasan terperinci tentang fungsi malas dalam Vue3: Pemuatan malas komponen meningkatkan prestasi aplikasi Jun 19, 2023 am 08:39 AM

Penjelasan terperinci tentang fungsi malas dalam Vue3: Pemuatan malas komponen meningkatkan prestasi aplikasi

Artikel ini meringkaskan kaedah klasik dan perbandingan kesan peningkatan ciri & pemperibadian dalam anggaran CTR. Artikel ini meringkaskan kaedah klasik dan perbandingan kesan peningkatan ciri & pemperibadian dalam anggaran CTR. Dec 15, 2023 am 09:23 AM

Artikel ini meringkaskan kaedah klasik dan perbandingan kesan peningkatan ciri & pemperibadian dalam anggaran CTR.

Pengesahan berasaskan token dengan Angular dan Node Pengesahan berasaskan token dengan Angular dan Node Sep 01, 2023 pm 02:01 PM

Pengesahan berasaskan token dengan Angular dan Node

See all articles