在Angular2中导入模块

时间:2016-11-17 08:38:32

标签: node.js angular typescript

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

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

我的问题是:

为什么我们使用'@ angular / core'中的“import {}”[这是ES6模块语法] 而不是commonJS require()语法来访问节点模块 在angular2代码文件中。

1 个答案:

答案 0 :(得分:4)

原因是Angular2是用TypeScript编写的。

TypeScript是ES2015的超集,并且希望尽可能接近ES2015建议的语法。这就是您从语法中使用ES2015 import {}的原因。

但是,TypeScript还带有内置的转换器(tsc)。这意味着您编写TypeScript代码,但在tsconfig.json

中定位特定的EcmaScript版本
  • 在定位ES5并查看已编译的代码时,您将会这样做 清楚地看到幕后的TypeScript会将转换文件中的import {}转换为require()。
  • 当定位ES6时,当然在转换后的代码中,您的导入将是ES2015导入。请注意,在定位ES6时,您需要babel将ES6模块转换为ES5,或使用System.js在浏览器中加载ES6模块。

干杯