exports 对象的特性
exports
是一个普通的 JavaScript 对象,可以在模块作用域内对其进行修改。- 模块的
exports
对象初始是一个空对象,需要通过给其赋值来导出内容。 - 赋值后,
exports
对象的键值对将与导出模块的同名属性对应。 - 可以多次赋值给
exports
对象,每次赋值都会覆盖之前的键值对。
导出模块
要导出模块,需要使用 exports
对象将需要共享的内容赋值给它。例如:
// myModule.js
const myFunction = () => {
console.log("Hello from myModule!");
};
exports.myFunction = myFunction;
在这个例子中,myFunction
函数被导出到 myModule
模块的 exports
对象,其他模块可以通过 const { myFunction } = require("./myModule");
语句访问它。
导出对象
如果要导出一个对象,可以将对象直接赋值给 exports
对象。例如:
// objectModule.js
exports = {
name: "John Doe",
age: 30,
};
在这个例子中,一个包含 name
和 age
属性的对象被导出到 objectModule
模块。其他模块可以通过 const { name, age } = require("./objectModule");
语句访问这些属性。
导出多个项
可以使用 ES6 的解构赋值语法同时导出多个项。例如:
// utilModule.js
const PI = 3.14;
const sqrt = (num) => Math.sqrt(num);
exports = { PI, sqrt };
在这个例子中,PI
常量和 sqrt
函数被同时导出到 utilModule
模块。其他模块可以通过 const { PI, sqrt } = require("./utilModule");
语句访问这些项。
导出默认值
除了导出命名项外,还可以导出一个默认值,它将被模块的默认导出。例如:
// defaultModule.js
const defaultExport = "Hello from defaultModule!";
module.exports = defaultExport;
在这个例子中,"Hello from defaultModule!"
字符串被导出为 defaultModule
模块的默认导出。其他模块可以通过 const defaultExport = require("./defaultModule");
语句访问它。
注意要点
- 导出模块时,通常使用命名导出,以便控制模块暴露的接口。
- 默认导出通常用于导出模块的主要功能或对象。
exports
对象是模块的私有属性,不应该直接修改它。- 导出模块时,应考虑模块之间的依赖关系和代码的可重用性。