2016-11-17 269 views
4

根据理解,Node js使用CommonJS模块模式,而在CommonJS 模式中,我们使用require()来导入节点模块。在Angular2中导入模块

在Angular 2应用程序开发中,我们使用了@ angular/core,@ angular/common等节点模块 。

我的问题是:

为什么我们用[这是ES6模块语法] 代替CommonJS的需要()语法“从‘@角/芯’进口{}”中angular2访问节点模块 代码文件。

回答

4

原因是Angular2是用TypeScript编写的。

打字稿是ES2015的一个超集,并希望尽可能接近ES2015建议的语法越好。这就是为什么您从语法中使用ES2015 import {}的原因。

然而,打字稿还带有一个内置的transpiler(TSC)。这意味着你编写打字稿代码,但针对特定的EcmaScript版本的tsconfig.json

  • 当靶向ES5,展望transpiled代码,你会 清楚地看到,在幕后打字稿将转化进口{}从要求( )在传输的文件中。
  • 当transpiled代码靶向ES6,当然,你的进口量将ES2015进口。要知道,靶向ES6时,您将需要babel到transpile您ES6模块ES5或使用System.js加载在浏览器中ES6模块。

干杯