[Angular] 笔记 7:模块

Angular 中的模块(modules) 是代码在逻辑上的最大划分 ,它类似于C++, C# 中的名字空间

module 可分为如下几种不同的类型:

使用模块的第一个原因是要对代码进行逻辑上的划分,第二个非常重要的原因是为了实现懒惰加载(lazy loading),即不同的模块仅在使用时才加载。

生成模块相关指令举例:

VS Terminal 运行命令:

sh 复制代码
PS D:\Angular\my-app> ng generate module pokemon-base
CREATE src/app/pokemon-base/pokemon-base.module.ts (197 bytes)

这里模块名称pokemon-base后面没有再加一个 -module是因为Angular会自动加上一个 .module, pokemon-base-module.module 看起来会很奇怪,从 VS code 可看到新生成的文件夹 pokemon-base以及新文件 pokemon-base.module.ts

非常重要的一点,pokemon-base.module.ts 文件中要加上exports: [ ],

ts 复制代码
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';

@NgModule({
  declarations: [],
  imports: [CommonModule],
  // important
  exports: [],
})
export class PokemonBaseModule {}

VS Terminal 运行命令生成一个 UI 组件 pokemon-list:

sh 复制代码
PS D:\Angular\my-app> ng generate component pokemon-base/pokemon-list --module=pokemon-base/pokemon-base.module.ts
CREATE src/app/pokemon-base/pokemon-list/pokemon-list.component.html (27 bytes)
CREATE src/app/pokemon-base/pokemon-list/pokemon-list.component.spec.ts (635 bytes)
CREATE src/app/pokemon-base/pokemon-list/pokemon-list.component.ts (298 bytes)
CREATE src/app/pokemon-base/pokemon-list/pokemon-list.component.css (0 bytes)
UPDATE src/app/pokemon-base/pokemon-base.module.ts (308 bytes)

可以看到项目中新生成的组件文件夹以及文件:

同时修改 pokemon-base.module.ts 中的 exports: [ ],

ts 复制代码
@NgModule({
  declarations: [],
  imports: [CommonModule],
  // 增加 PokemonListComponent
  exports: [PokemonListComponent],
})
export class PokemonBaseModule {}

修改 app.module.ts 中的 imports

ts 复制代码
@NgModule({
  declarations: [AppComponent],
  // 增加 PokemonBaseModule
  imports: [BrowserModule, AppRoutingModule, PokemonBaseModule],
  providers: [],
  bootstrap: [AppComponent],
})
export class AppModule {}

app.component.html 中增加新生成的组件:

运行 ng serve

相关推荐
moxiaoran575344 分钟前
uni-app学习笔记五-vue3响应式基础
笔记·学习·uni-app
饕餮争锋1 小时前
org.slf4j.MDC介绍-笔记
java·开发语言·笔记
weixin_448119941 小时前
Datawhale 5月llm-universe 第1次笔记
笔记
chennalC#c.h.JA Ptho1 小时前
lubuntu 系统详解
linux·经验分享·笔记·系统架构·系统安全
学渣y2 小时前
React状态管理-对state进行保留和重置
javascript·react.js·ecmascript
_龙衣2 小时前
将 swagger 接口导入 apifox 查看及调试
前端·javascript·css·vue.js·css3
m0_689618283 小时前
从海洋生物找灵感:造个机器人RoboPteropod,它能在水下干啥?
笔记·机器人
struggle20253 小时前
continue通过我们的开源 IDE 扩展和模型、规则、提示、文档和其他构建块中心,创建、共享和使用自定义 AI 代码助手
javascript·ide·python·typescript·开源
x-cmd4 小时前
[250512] Node.js 24 发布:ClangCL 构建,升级 V8 引擎、集成 npm 11
前端·javascript·windows·npm·node.js
夏之小星星4 小时前
el-tree结合checkbox实现数据回显
前端·javascript·vue.js