在 JavaScript 中,实现模块化主要有以下几种方式:
- ES6 的 import/export:ES6 标准引入的模块化语法,广泛支持与使用。
// foo.js
export function foo() { ... }
// bar.js
import { foo } from './foo.js';
foo();
- CommonJS:主要用于 Node.js,使用 require() 和 module.exports。
// foo.js
module.exports = {
foo() { ... }
}
// bar.js
const { foo } = require('./foo.js');
foo();
- AMD:主要用于浏览器,使用 define() 和 require()。
// foo.js
define(function() {
return {
foo() { ... }
}
});
// bar.js
require(['./foo.js'], function(foo) {
foo.foo();
});
- UMD:既可以用于 Node.js,也可以用于浏览器。检测当前环境选择 AMD 或 CommonJS。
(function (root, factory) {
if (typeof define === 'function' && define.amd) {
// AMD
define(['xxx'], factory);
} else if (typeof exports === 'object') {
// CommonJS
module.exports = factory(require('xxx'));
} else {
// 浏览器全局变量
root.module = factory(root.xxx);
}
}(this, function (xxx) {
// 模块代码
}));
- IIFE:通过函数作用域模拟模块。
(function () {
// 模块代码
}());
所以,总结来说 JavaScript 中实现模块化的主要方式有:
- ES6 的 import/export:目前最标准的模块化解决方案
- CommonJS:主要用于 Node.js
- AMD:主要用于浏览器
- UMD:既可以用于 Node.js,也可以用于浏览器
- IIFE:通过闭包模拟模块