一个兼容 node 与浏览器的模块写法

一个兼容 node 与浏览器的模块写法

// test.js
(function (root, factory) {
  if (typeof define === 'function' && define.amd) {
    // AMD
    define(factory);
  } else if (typeof exports === 'object') {
    // Node, CommonJS-like
    // es6 module , typescript
    var mo = factory();
    mo.__esModule = true;
    mo['default'] = mo;
    module.exports = mo;
  } else {
    // browser
    root.fn = factory();
  }
}(this, function () {
  function f(arg) {
    console.log('arg', arg)
  }
  return f;
}));
// es6 module , typescript
import fn from 'test.js';
console.log(fn('test'));
<script src="test.js"></script>
<script>
  console.log(fn('test'));
</script>
posted @ 2019-07-04 19:15  程序媛李李李李蕾  阅读(483)  评论(0编辑  收藏  举报