在Angular2中导入模块

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

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

我的问题是:

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

原因是Angular2是用TypeScript编写的。

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

但是,TypeScript也带有一个内置的转换器(tsc)。 意思是你编写TypeScript代码,但是在你的tsconfig.json中定位一个特定的EcmaScript版本

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

干杯