进口/出口在Angular 2 ngModule中的作用

我正在学习Angular 2,我很难理解ngModule中导入/导出的作用。更具体地说,为什么导入模块很重要,如果你要使用es6语法导入它也是如此
import { BrowserModule } from '@angular/platform-browser';
@NgModule({
  imports:      [ BrowserModule ],providers:    [ Logger ],declarations: [ AppComponent ],exports:      [ AppComponent ]
})

通过es6语法检测模块是不是更简单?

imports – other modules whose exported classes are needed by component
templates declared in this module.

但是我们已经在组件级别上导入了那些。我错过了什么吗?我也在寻找他们为什么选择这种语法的一些例子。

令人困惑的是,Angular和ES6都在使用相同的术语……

在ES6 / TypeScript中:

>模块是项目中的任何代码文件
>导入是以import关键字开头的行。
>导出是以export关键字开头的行。

在Angular中:

>模块是用@NgModule修饰的类。它充当应用程序中所有组件,管道,指令和提供程序的注册表(也称为容器)。
>导入是您放在@NgModule装饰器的imports属性中的内容。它使Angular模块能够使用在另一个Angular模块中定义的功能
>你输出的是@NgModule装饰器的exports属性。它使Angular模块能够将其某些组件/指令/管道暴露给应用程序中的其他模块。没有它,模块中定义的组件/指令/管道只能在该模块中使用。

ES6模块/进口/出口非常低。它们是ES6语言的一个特性,就像const或let这样的关键字……在ES6 / TypeScript中,每个文件都有ITS OWN SCOPE。因此,每当您需要在文件中使用类/函数/变量并且在另一个文件中定义类/函数/变量时,您必须导入它(对应的是它必须在定义它的文件中导出)。这不是Angular特有的。 ES6中编写的所有项目都可以这种方式使用模块/导入/导出。

另一方面,Angular的模块/导入/导出是Angular框架的一个特性。它们只在Angular世界中有意义。其他JavaScript框架可能有类似的概念,但它们将使用不同的语法。

现在两者之间有一些重叠。例如,要在@ NgModule.imports(Angular world)中使用符号,您需要在定义模块的TypeScript文件中导入符号(ES6 / TypeScript世界):

// ES6/TypeScript Imports
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';

@NgModule({
  // Angular Imports
  imports: [ BrowserModule ]
})

但是如果你仔细阅读上面的定义,你会发现这两件事实际上是完全不同的。一个是语言,另一个是框架。

相关文章

AngularJS 是一个JavaScript 框架。它可通过 注:建议把脚本放在 元素的底部。这会提高网页加载速度,因...
angluarjs中页面初始化的时候会出现语法{{}}在页面中问题,也即是页面闪烁问题。出现这个的原因是:由于...
AngularJS 通过被称为指令的新属性来扩展 HTML。AngularJS 指令AngularJS 指令是扩展的 HTML 属性,带有...
AngularJS 使用表达式把数据绑定到 HTML。AngularJS 表达式AngularJS 表达式写在双大括号内:{{ expres...
ng-repeat 指令可以完美的显示表格。在表格中显示数据 {{ x.Name }} {{ x.Country }} 使用 CSS 样式为了...
$http是 AngularJS 中的一个核心服务,用于读取远程服务器的数据。读取 JSON 文件下是存储在web服务器上...