Angular2新手。很棒的产品。同样,文档难以破解,有时读起来像博士教科书,所以我只是想用普通英语来总结它,还有一些问题。
模块,一个通用编程术语,我们将一些相关的东西聚集在一起,例如在.NET世界中,类的.cs文件,甚至项目都可以看作模块。
NgModule 也是一个模块。现在它更具有特定角度,因此它以" Ng"为前提。并称为NgModule。
@NgModule 不再是通用术语,它是按照特定Angular格式定义类的实际代码。
这是一个典型的预生成 src / app / app.module.ts :
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
@NgModule({ // looks like it's always called "@NgModule", can't be @NgModule25. My understanding is even though I want to have more than one NgModule in my project, because each is defined in its own .ts file, so compile won't complain about ambiguous names.
imports: [ BrowserModule ], // notice this import ending with an extra "s", still don't know why need to import again the same module after the lines above. Just tell myself to remember import twice.
providers: [ Logger ],
declarations: [ AppComponent ], // what this NgModule has, like inside a .csproj
exports: [ AppComponent ], // list out all components will be exposed inside this NgModule, consider this is a list of all "public" stuffs from a class.
bootstrap: [ AppComponent ], // which component(s) to start with
})
export class AppModule // "AppModule" is a default name for root module. My guess for non-root NgModule(s), whatever you give a name here becomes the name of class outside can see, just make sure the name match exactly the file name.
{
... // more code here for this NgModule (class), for example C#.NET anything at class level but not in functions.
}
AppComponent
,我不知道是否必须有一个默认组件,就像模块那样称为 AppComponent ,或者可能因为那些模块我们{{1}有一个具有相同名称的条目组件,因此我们必须使用它来连接它们。
关于NgModule文件名,如果import
是AppModule
,是否必须以app.module
开头?那么NgModule的名字是App
?要遵循的任何规则吗?
对不起,很长的帖子。因为这些术语紧密相关,所以使用一个代码库来说明更容易。
答案 0 :(得分:0)
好的,所以我会及时提出我的答案,但是要筛选很多东西,我不想永远絮絮叨叨......
模块:您是对的,它只是一个组件库或代码的其他位。这是一个通用的编程术语。
NgModule :在你说的上下文中,不要过多地考虑这个问题,它不是一个模块。它是您要导入使用的装饰器(见下)。
@NgModule():实施NgModule
装饰器将class
归类为角度模块。
AppComponent
在AppModule
(一个Angular模块,感谢NgModule
装饰器)中声明bootstrap
作为入口点(加载的组件),它被用于AppModule
字段。
app.module.ts
是否需要保存为.module.ts
,否。但是Angular Style Guide确实建议使用什么类型的文件的后缀...模块有.component.ts
,组件为myFirstModule25
。
最后,你可以在技术上称你的模块/班级Module
,但我不会,它不是真正传统的......首先,课程应该始终以大写字母开头。而且,虽然您不需要使用equals()
来结束模块/类,这是Angular CLI使用的约定,我会说看一下该约定以参考正常情况/适当。 (以及风格指南)