tsconfig.json中模块类型的区别

kok*_*lla 26 node.js angular

在tsconfig.json中

{
    "compilerOptions": {
     "target": "es5",
     "module": "commonjs",
     "moduleResolution": "node",
     "sourceMap": true,
     "emitDecoratorMetadata": true,
     "experimentalDecorators": true,
     "removeComments": false,
     "noImplicitAny": false
  }
}
Run Code Online (Sandbox Code Playgroud)

我无法理解以下module类型之间的区别:

"commonjs","amd","umd","system","es6","es2015","none"

问题:我应该使用哪个值以及何时使用它?

Mil*_*lad 20

CommonJS模式(或nodejs):

var someOtherFunction = require('./someOtherFunction.js');
exports.add = function() {
    var sum = 0, i = 0, args = arguments, l = args.length;
    while (i < l) {
        sum += args[i++];
    }
    return sum;
}
Run Code Online (Sandbox Code Playgroud)

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;
}
Run Code Online (Sandbox Code Playgroud)

AMD模式:

define(['someOtherFunction'], function () {
    return function () {
        var sum = 0, i = 0, args = arguments, l = args.length;
        while (i < l) {
            sum += args[i++];
        }
        return sum;
    };
});
Run Code Online (Sandbox Code Playgroud)

异步模块定义(AMD)是客户端代码中最常用的,而node.js模块(CommonJS Modules/1.1的扩展)是服务器端环境中的主要模式.

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

ES5是您以前看到的常规JavaScript.

您将使用ES6 for Angular2,也称为ECMAScript 2015.

  • 显然不是,但是您定义了 target="es5" ,这意味着它将被编译为大多数浏览器支持的 es5 。所以你很好 (2认同)