js模块 js 模块
在 ES6 模块中
import MyPlugin from './myPlugin.js'; const pluginInstance = new MyPlugin(); pluginInstance.doSomething();
在 CommonJS 中
const MyPlugin = require('./myPlugin.js'); const pluginInstance = new MyPlugin(); pluginInstance.doSomething();
在 AMD 中
require(['myPlugin'], function (MyPlugin) { const pluginInstance = new MyPlugin(); pluginInstance.doSomething(); });
在浏览器中
<script src="path/to/myPlugin.js"></script> <script> const pluginInstance = new MyPlugin(); pluginInstance.doSomething(); </script>
为了支持以上全部方式加载,封装成 umd模式
// myPlugin.js (function (root, factory) { if (typeof define === 'function' && define.amd) { // AMD define([], factory); } else if (typeof module === 'object' && module.exports) { // CommonJS module.exports = factory(); } else { // 全局变量 root.MyPlugin = factory(); } }(typeof self !== 'undefined' ? self : this, function () { var MyPlugin = {} return MyPlugin; //最后一定要return }));
记住坑:
1,保证全局模式你的插件名不冲突
2,在AMD 或 CommonJS 环境中,保证你的依赖插件都已经加载