Node.js tsconfig.json中模块类型之间的差异

Node.js tsconfig.json中模块类型之间的差异,node.js,angular,Node.js,Angular,在tsconfig.json中 { "compilerOptions": { "target": "es5", "module": "commonjs", "moduleResolution": "node", "sourceMap": true, "emitDecoratorMetadata": true, "experimentalDecorators": true, "removeComments": false

在tsconfig.json中

{
    "compilerOptions": {
     "target": "es5",
     "module": "commonjs",
     "moduleResolution": "node",
     "sourceMap": true,
     "emitDecoratorMetadata": true,
     "experimentalDecorators": true,
     "removeComments": false,
     "noImplicitAny": false
  }
}
我无法理解以下
模块
类型之间的区别:

“commonjs”、“amd”、“umd”、“系统”、“es6”、“es2015”、“无”

问题:我应该使用哪个值,什么时候应该使用它?

CommonJS模式(或nodejs):

var someOtherFunction=require('./someOtherFunction.js');
exports.add=函数(){
var sum=0,i=0,args=arguments,l=args.length;
而(i
ES6模式:

import someOtherFunction from './someOtherFunction.js';

export function add() {
    var sum = 0, i = 0, args = arguments, l = args.length;
    while (i < l) {
        sum += args[i++];
    }
    return sum;
}
define(['someOtherFunction'], function () {
    return function () {
        var sum = 0, i = 0, args = arguments, l = args.length;
        while (i < l) {
            sum += args[i++];
        }
        return sum;
    };
});
从“./someOtherFunction.js”导入someOtherFunction;
导出函数add(){
var sum=0,i=0,args=arguments,l=args.length;
而(i
AMD模式:

import someOtherFunction from './someOtherFunction.js';

export function add() {
    var sum = 0, i = 0, args = arguments, l = args.length;
    while (i < l) {
        sum += args[i++];
    }
    return sum;
}
define(['someOtherFunction'], function () {
    return function () {
        var sum = 0, i = 0, args = arguments, l = args.length;
        while (i < l) {
            sum += args[i++];
        }
        return sum;
    };
});
define(['someOtherFunction'],function(){
返回函数(){
var sum=0,i=0,args=arguments,l=args.length;
而(i
异步模块定义(AMD)是最流行的客户端代码,而node.js模块(CommonJS模块/1.1的扩展)是服务器端环境中的主流模式

通用模块定义(UMD)是一组样板食谱,试图弥合AMD和node.js之间的差异,允许工程师以单一格式编写代码库,而不是以两种格式编写或在构建步骤中转换为其他格式

ES5是您经常看到的普通JavaScript


您将在Angular2上使用ES6,也称为ECMAScript 2015。

使用ES6是否支持所有新旧浏览器显然不支持,但您定义的是target=“es5”,这意味着它将编译为大多数浏览器支持的es5。因此,您可以确定哪种模块类型更灵活或更支持用于任何应用程序browser@kokadwarprafulla,刚才解释过,如果您使用ES6,它将被编译为Es5,并且受到很好的支持。如果第一个示例定义了“add”函数,然后通过
module.exports={add}将其导出,那么它对commonjs不是更具启发性吗