Node.js 导入Angular2中的模块

Node.js 导入Angular2中的模块,node.js,angular,typescript,Node.js,Angular,Typescript,据了解,NodeJS使用CommonJS模块模式,在CommonJS中 我们使用require()导入节点模块的模式 在Angular 2应用程序开发中,我们使用@Angular/core、@Angular/common等 节点模块 我的问题是: 为什么我们使用“import{}from'@angular/core'”[这是ES6模块语法] 而不是commonJS require()语法来访问节点模块 在angular2代码文件中。原因是angular2是用TypeScript编写的 TypeS

据了解,NodeJS使用CommonJS模块模式,在CommonJS中 我们使用require()导入节点模块的模式

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

我的问题是:

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

原因是angular2是用TypeScript编写的

TypeScript是ES2015的超集,希望尽可能接近ES2015建议的语法。这就是为什么要使用ES2015导入{}from语法

然而,TypeScript还附带了一个内置的transpiler(tsc)。这意味着您要编写TypeScript代码,但要以您的系统中的特定EcmaScript版本为目标

  • 当以ES5为目标并查看传输的代码时,您将 清楚地看到,幕后的TypeScript将在传输的文件中将import{}从转换为require()
  • 当以ES6为目标时,当然在传输代码中,您的导入将是ES2015导入。请注意,以ES6为目标时,您需要将ES6模块传输到ES5,或使用在浏览器中加载ES6模块
干杯