• 首页
  • 关于
    • 前端行知录 photo

      前端行知录

      前端路漫漫,行知方知行

    • Email
    • Github
  • 文章
    • 所有文章
    • 所有标签
  • 作品

兼容多种模块规范

15 May 2016

Reading time ~1 minute

兼容多种模块规范

为了让同一个模块可以运行在前后端,以及兼容模块规范的环境,类库开发者需要将类库代码包装在一个闭包内。 以下代码能够就兼容 Node、AMD、CMD以及常见的浏览器环境。

;(function (name, definition) {
  // 检查上下文环境是否为 AMD 或 CMD
  var hasDefine = typeof define === 'function',
    // 检查上下文环境是否为 Node
    hasExports = typeof module !== 'undefined' && module.exports;

  if (hasDefine) {
    // AMD 环境或 CMD 环境
    define(definition);
  } else if (hasExports) {
    // 定义为普通 Node 模块
    module.exports = definition();
  } else {
    // 将模块的执行结果挂在 window 变量中, 在浏览器中 this 指向 window 对象
    this[name] = definition();
  }
})('funcName', function () {
  // return funcDefinition
});

引用自 《深入浅出 Node.js》

JavaScript

alcat2008

Dreamer, Practitioner, Incomplete Front-ender

← BigPipe APP调测平台GT →