模块(Module)和组件(Component)的关系
- 包含关系:模块是一个容器,它可以包含多个组件。组件是构成应用的基本单元,负责处理视图和用户交互。
- 功能组织:模块用于将相关功能的组件、服务、指令等组织在一起,提高代码的可维护性和可复用性。组件专注于自身的视图逻辑和交互。
创建一个简单的组件
- 使用Angular CLI创建:在项目目录下运行命令
ng generate component component-name
,其中 component-name
是你自定义的组件名称。例如,运行 ng generate component my - component
,Angular CLI会自动生成以下文件:
my - component.component.ts
:组件的TypeScript逻辑文件,包含组件类和相关逻辑。
my - component.component.html
:组件的HTML模板文件,定义组件的视图结构。
my - component.component.css
:组件的CSS样式文件,用于设置组件的样式。
my - component.component.spec.ts
:组件的测试文件,用于编写单元测试。
- 手动创建:
- 创建
my - component.component.ts
文件,内容如下:
import { Component } from '@angular/core';
@Component({
selector: 'app - my - component',
templateUrl: './my - component.component.html',
styleUrls: ['./my - component.component.css']
})
export class MyComponent {
// 这里可以定义组件的属性和方法
message = 'Hello from MyComponent!';
}
- 创建
my - component.component.html
文件,添加视图内容,例如:
<p>{{message}}</p>
- 创建
my - component.component.css
文件,添加样式,例如:
p {
color: blue;
}
将组件引入到模块中
- 打开模块文件:通常是
app.module.ts
。
- 导入组件:在文件顶部导入组件类,例如:
import { MyComponent } from './my - component/my - component.component';
- 添加到
declarations
数组:在 @NgModule
装饰器的 declarations
数组中添加该组件,如下:
@NgModule({
declarations: [
// 其他已有组件...
MyComponent
],
imports: [
// 模块导入...
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule {}
模块在项目中的作用
- 代码组织:将相关功能的组件、服务、指令等组织在一个模块中,便于管理和维护。例如,将用户相关的组件、服务放在
UserModule
中。
- 懒加载:模块支持懒加载,能够实现按需加载模块及其相关组件,提高应用的加载性能。例如,对于一些不常用的功能模块,可以设置为懒加载,当用户需要时再加载。
- 作用域隔离:模块内的组件、服务等具有一定的作用域隔离性,不同模块的同名组件或服务不会相互干扰。