模块
一句话解释
模块是一个独立的代码文件,通过 `export` 暴露自己的功能、通过 `import` 引入别人的功能,实现代码组织和复用。
用大白话说
模块(module)就是把代码拆成多个独立文件,每个文件是一个模块,可以互相导入导出。好处是:代码组织清晰、避免全局污染、方便复用。
// math.js —— 导出
export function add(a, b) { return a + b; }
export const PI = 3.14;
// main.js —— 导入
import { add, PI } from "./math.js";
console.log(add(2, 3)); // 5
JS 的模块系统主要有两种:
- ES Modules(ESM):
import/export,浏览器原生支持,是现代标准 - CommonJS(CJS):
require/module.exports,Node.js 传统写法
模块里的变量默认是私有的,只有 export 出去的才能被外部访问。这天然实现了作用域隔离,避免不同文件里的同名变量冲突。大型项目都靠模块化来组织代码。
示例
javascript
// math.js
export function add(a, b) { return a + b; }
export const PI = 3.14;
// main.js
import { add, PI } from "./math.js";
console.log(add(2, 3)); // 5
console.log(PI); // 3.14用 export 把函数和常量暴露出去,用 import { 名字 } from "文件路径" 引入。模块内默认私有。
工作原理
- 在模块文件里用
export暴露要共享的功能 - 在另一个文件用
import { 名字 } from "路径"引入 - 模块内未 export 的变量对外不可见(私有)
- 同一模块被多次 import 只会执行一次,结果被缓存
常见混淆
容易混淆的对象: 包
关键区别: 模块是单个文件,包(package)是多个模块组成的目录,通常带 package.json 描述。一个包可以包含多个模块。
相关术语
相关资源
相关课程
- JavaScript 概览
模块化是组织 JS 代码的方式
学习基础知识
通过结构化课程深入理解这个主题。
解读错误信息
用大白话解释常见错误——什么意思、为什么发生、如何修复。