在深入了解ES6模块化系统之前,JavaScript社区主要使用CommonJS作为模块化方案。CommonJS广泛应用于Node.js环境,它通过‘require‘和‘module.exports‘提供了简单而有效的模块化机制。虽然ES6模块已经成为现代JavaScript的主流,但理解CommonJS依然非常重要,特别是在处理旧版代码或Node.js项目时。
什么是CommonJS模块?
CommonJS是一种同步模块化规范,主要用于服务器端的JavaScript开发,尤其是在Node.js环境中。与ES6模块不同,CommonJS模块是在运行时加载的,这意味着在代码执行时,模块的导入和导出是动态进行的。
同步加载
CommonJS模块是同步加载的,这在服务器端非常合适,因为所有的模块都可以在脚本启动时一次性加载完毕。然而,这种同步加载在浏览器环境中可能会导致性能问题,因为网络请求是异步的,可能会阻塞页面的渲染。
单文件模块
每个CommonJS模块都是一个单独的文件,并且该文件中的所有内容都是私有的,除非明确地导出。这使得模块可以在不影响全局作用域的情况下独立运行。
‘module.exports‘:导出模块内容
在CommonJS模块系统中,‘module.exports‘用于定义模块对外暴露的内容。导出的内容可以是对象、函数、类,甚至是基本数据类型。
// math.js
const add = (x, y) => x + y;
const su