CommonJS规范最初是为了解决JavaScript在浏览器端缺乏模块系统的问题而提出的,后来被Node.js采用并推广到了服务器端。它的主要思想是通过require()
方法来同步加载依赖的模块,通过module.exports
来导出需要暴露的接口。
// 导入模块
const moduleA = require('./moduleA');
// 导出模块
module.exports = {
foo: function () {
console.log('This is a function in moduleB.');
}
}
AMD规范是为了解决CommonJS规范在浏览器端的兼容性问题而提出的,它采用异步加载模块的方式,可以在不影响页面正常渲染的情况下,按需异步加载所依赖的模块。它主要使用define()
函数来定义模块,使用require()
函数来异步加载依赖的模块。
// 定义模块
define(['moduleA'], function (moduleA) {
function foo() {
console.log('This is a function in moduleB.');
}
// 导出模块
return {
foo: foo
};
});
// 异步导入模块
require(['moduleB'], function (moduleB) {
moduleB.foo();
});
ES6模块化规范是ECMAScript 6标准提出的模块化规范,它已经被现代浏览器原生支持。它主要使用import
关键字来导入模块,使用export
关键字来导出模块。
// 导入模块
import moduleA from './moduleA';
// 导出模块
export default {
foo() {
console.log('This is a function in moduleB.');
}
};
除了以上三种规范外,还有一些第三方的模块化规范,如RequireJS、SeaJS等。不同的规范适合不同的场景,开发者需要根据实际需求选择合适的规范。