module.exports、exports、require是CommonJS的规范
export、export default、import是ES6的规范
1. module.exports 、exports 和 require
module.exports
- 在每个模块中,都有一个
module对象,它包含了有关模块的信息,包括其导出。 module.exports是一个特殊的对象,用来指定模块的导出。- 当其它模块使用
require加载当前模块时,返回的就是module.exports对象。
exports
exports是module.export的别名,通常用来简化导出过程。- 默认情况下,
exports指向module.exports。 - 可以通过给
exports添加属性来间接修改module.exports。
require
- 用于加载模块的函数。
- 接受一个字符串参数,该参数就是模块的路径。
- 返回加载模块的
module.exports对象。 require可以在代码的任何位置使用require实际上是一个赋值过程
示例:
// myModule.js
function add(a, b) { return a + b; }
module.exports = { add: add };
// 或者使用 exports
exports.add = add;
// index.js
const myModule = require('./myModule');
console.log(myModule.add(1, 2)); // 输出: 3
注意:如果直接给exports复制一个新对象,那么exports和module.exports将不再关联
exports = {}; // 错误做法
2. export 、 export default 和 import
export
export是 ES6 模块化标准的一部分,用于导出模块中的函数、对象或原始值。- 可以导出多个独立的成员,每个成员都需要有自己的名称。
export default
export default也是 ES6 模块化的一部分,用于导出模块的默认导出。- 只能有一个默认导出,但可以与其他
export语句混合使用。 - 默认导出可以是任何东西(函数、对象、类等),并且不需要显式命名。
- 在导入时,可以自由选择导入变量的名称。
import
- 是一个声明,用于导入模块的导出。
import必须放在模块的顶层。import实际上是一个解构过程。
注意: export default 只能出现一次,而 export 可以出现多次。
示例:
// myModule.js
export function add(a, b) {
return a + b;
}
export default function subtract(a, b) {
return a - b;
}
// index.js
import { add }, { subtract as sub } from './myModule';
console.log(add(1, 2)); // 输出: 3
console.log(sub(5, 3)); // 输出: 2
个人记录以供学习翻看,如有表述不当,请多多指出,如有帮助,也可以点赞收藏,感谢支持~