模块是JavaScript中封装功能、隔离作用域、避免命名冲突和实现复用的基本单元,解决全局污染、依赖混乱与协作困难问题;ES6模块通过export/import实现静态解析与显式依赖,CommonJS则用require/module.exports支持动态加载;项目中应按功能或业务域组织模块,保持单一职责。
模块是 JavaScript 中用于封装功能、隔离作用域、避免命名冲突并实现代码复用的基本单元。它让开发者能把大程序拆分成小而专注的文件,按需加载、独立维护。
在早期 JavaScript 中,所有脚本默认共享全局作用域,变量和函数容易重名覆盖,依赖顺序难管理,大
型项目难以协作和测试。模块机制(尤其是 ES6 的 import/export)提供了显式的依赖声明、私有作用域和静态分析能力,让代码更可靠、可预测。
使用 export 对外暴露内容,用 import 引入其他模块:
export default function greet() { return 'Hello'; }import sayHi from './greet.js';
export const PI = 3.14; export function add(a, b) { return a + b; }import { PI, add } from './math.js'; 或整体导入:import * as math from './math.js';
主要在 Node.js 环境中使用,基于 require() 和 module.exports:
module.exports = { PI: 3.14, add: (a, b) => a + b };
const math = require('./math.js');
按功能或业务域划分目录,保持单模块职责单一:
utils/,如 utils/date.js、utils/http.js
components/,每组件一个文件夹,含 JS、CSS、测试store/
main.js)只做初始化,不写业务逻辑