一个兼容 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>