Node12 AMD、CDM、UMD模块的写法

AMD

AMD是一步模块规范,RequireJS就是采用这种规范实现

// 文件名: foo.js
define(['jquery'], function ($) {
    // 方法
    function myFunc(){};

    // 暴露公共方法
    return myFunc;
});

定义的第一个部分是一个依赖数组,第二部分是回调函数,只有当依赖的组件可用时回调函数才会执行。

CommonJS

Node遵循的是CommonJS规范

// 文件名: foo.js
// 依赖
var $ = require('jquery');
// 方法
function myFunc(){};

// 暴露公共方法(一个)
module.exports = myFunc;

UMD通用模块规范

UMD兼容了AMD和CommonJS,还支持全局规范

((root, factory) => {
  if (typeof define === 'function' && define.amd) {
    //AMD
    define(['jquery'], factory);
  } else if (typeof exports === 'object') {
    //CommonJS
    var $ = requie('jquery');
    module.exports = factory($);
  } else {
    //都不是,浏览器全局定义
    root.testModule = factory(root.jQuery);
  }
})(this, ($) => {
  //do something...  这里是真正的函数体
});

参考

  • https://github.com/hstarorg/HstarDoc/blob/master/%E5%89%8D%E7%AB%AF%E7%9B%B8%E5%85%B3/%E8%AE%A4%E8%AF%86AMD%E3%80%81CMD%E3%80%81UMD%E3%80%81CommonJS.md
  • http://web.jobbole.com/82238/

你可能感兴趣的:(NodeJS)