在../src/app/app.module.ts
的以下代码中,
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { AppComponent } from './app.component';
import { HomeComponent } from './home/home.component';
组件包括:
视图(
../src/app/app.component.html
)逻辑(
../src/app/app.component.ts
)样式(
../src/app/app.component.css
)
Angular应用程序是一个组件树。好的组件具有高内聚性,即每个组件只包含具有相关功能的元素。它们也被很好地封装并且松散耦合。
模块与组件有何不同?
组件只是一个带有@Component()
注释的类。请注意,组件可能会引用.html和.css文件,当然不是强制性的。组件模板很可能直接"内联"在组件配置中,或者对于给定的组件可能根本没有任何html模板。
模块是Angular应用程序(可能还有其他类和接口)的结构元素。它也是带有@NgModule()
注释的"只是一个类"。
它充当组件、指令、服务、管道等的逻辑"容器",帮助您更好地构建整体源代码。
你可以看看这个现存的问题:What';s Angular组件和模块之间的区别
模块是具有组件的东西。它将它们封装起来,以便您可以导入和管理它们。
注意,当你制作一个组件时,你可以把任何装饰为@Injectable
的东西放在你的构造函数中:
@Component({
selector: 'app-heroes',
templateUrl: './heroes.component.html',
styleUrls: ['./heroes.component.css']
})
export class HeroesComponent implements OnInit {
constructor(private myService: MyService) { }
ngOnInit() {
}
}
神奇的是,你将有一个myService
可以使用。这是依赖项注入,它内置在Angular中,但它是在Module
级别上管理的。在您的模块中,您导入您希望能够使用的其他模块:
imports: [
BrowserModule,
FormsModule
],
定义你的模块包括什么:
declarations: [
AppComponent,
HeroesComponent,
MyService
],
导出任何组件(以便其他模块可以导入)
exports: [
HeroesComponent
],
它们有助于将应用程序组织成功能块。组件是告诉有角度的人如何渲染东西的东西。模块将组件、管道、服务等组成"块",这些"块"可以由angular编译或导入并供其他人使用。
编辑以寻址评论
回答您关于HttpClient的具体问题。HttpClient
是用于执行操作的服务。HttpClientModule
是您导入模块的模块,因此您可以使用它所包含的service。
您导入模块:
@NgModule({
imports: [
BrowserModule,
// Include it under 'imports' in your application module
// after BrowserModule.
HttpClientModule,
],
})
使用服务:
@Component(...)
export class MyComponent implements OnInit {
// Inject HttpClient into your component or service.
constructor(private http: HttpClient) {}
...
}
HttpClientModule
包含了HttpClient
工作所需的所有内容,并将其打包,以便您可以在自己的项目中使用它。
这个特定的模块只封装了一个服务,但该模块可以包含一组相关的服务、组件、管道或指令。例如,RouterModule
允许您使用RouterOutlet
和RouterLink
指令。
Module是一组组件、服务、过滤器或其他一些较小的模块,或者我们可以说您将所有这些导入到哪里,以便稍后在应用程序中使用,以备将来使用。在单个应用程序中,可能存在一个或多个模块。
然而,组件控制称为视图的屏幕补丁。您可以在类中定义组件的应用程序逻辑——它为支持视图所做的操作。类通过属性和方法的API与视图交互。
有关更多详细信息,请参阅本指南:
https://angular.io/guide/architecture