[Angular] JavaScript模块与NgModule – @NgModule是什么?(2)

了解 @NgModule 是什么,在此之前需要一些先前的知识。上次我们翻译了关于 JavaScript 模块的自由版本。这一次我们来翻译 Angular – JavaScript 模块与 NgModules 的自由版本。

时间里,我改变了很多。

JavaScript 和 Angular 在整理代码方面使用了不同的模块化方式。而 Angular 则同时依赖于这两种方式。

JavaScript模块

在JavaScript中,模块是包含代码的独立文件。

当想要使用模块的内容时,可以写下这样的代码。

export class AppComponent { ... }

当你想使用该模块时,你可以写下如下代码。

import { AppComponent } from './app.component'

NgModule (NgModule模块)

NgModule是被@NgModule修饰的类。@NgModule中的imports数组表示该模块所需的其他NgModule。这与JavaScript的模块不同。
被@NgModule修饰的类都保存在各自的文件中,但是与JavaScript的模块不同,并不意味着这些单独的文件就是NgModule。通过@NgModule和元数据才能成为NgModule。

由Angular CLI命令生成的文件同时成为JavaScript模块和NgModule。

/*
これらはJavaScriptのインポートステートメントです。
Angularはこれらについて関知しません。
*/
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';

import { AppComponent } from './app.component';

/*
@NgModule修飾子が、AngularにこのクラスがNgModuleであることを示します。
*/
@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [     /* 他のNgModuleをインポートしています。 */
    BrowserModule
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }

以下是NgModule类和JavaScript模块之间的区别:

– NgModule类是Angular特有的概念,用于组织和管理应用程序的不同功能模块。而JavaScript模块是一种通用的模块化语法,可以用于任何JavaScript应用。
– NgModule类可以定义组件、指令、管道和服务等各种Angular特有的构建块,以及其它在应用程序中共享的模块。而JavaScript模块可以包含任意JavaScript代码,没有必要遵循Angular的特定结构。
– NgModule类通过装饰器和元数据来定义模块的配置信息,包括导入其他模块、声明可用的组件和服务等。而JavaScript模块可以通过导入和导出语句来组织不同的功能,并不需要特定的装饰器或元数据。
– Angular应用程序必须使用NgModule类来组织各种功能模块,并在应用的根模块中引导应用程序。而JavaScript应用程序可以使用任何支持模块化的方式来组织代码,没有特定的要求。

以上是NgModule类和JavaScript模块之间的主要区别。

    • NgModuleは宣言可能なクラスにのみ束縛されます。宣言可能なクラスは、Angularコンパイラにとって、唯一重要なクラスです。

 

    • JavaScriptモジュールのようにメンバークラスをひとつの巨大なファイルにまとめるのではなく、@NgModule.declarationsリストにNgModuleクラスを列挙します。

 

    • NgModuleは、他からインポートしたか、自分自身である宣言可能なクラスのみをエクスポートします。それ以外のクラスを宣言したりエクスポートしたりはしません。

 

    JavaScriptモジュールと異なり、NgModuleは@NgModule.providersリストにプロバイダを追加することにより、アプリケーション全体を拡張できます。
bannerAds