**
注意 :
**
利用require()模块时,得到的永远是modul.exports指向的对象。
为了避免混乱,建议不要在同一个模块之中同时使用exports和module.exports
Node.js遵循了CommonJS模块化规范,CommonJS规定了模块的特性和各模块之间如何依赖。
(1)每个模块内部,module变量代表了当前模块
(2)module变量是一个对象,它的exports属性是对外的接口。
(3)加载某个模块,其实是加载该模块的module.exports属性,require()方法用于加载模块。
在创建 JavaScript 模块时,export 语句用于从模块中导出实时绑定的函数、对象或原始值,以便其他程序可以通过 import语句使用它们。被导出的绑定值依然可以在本地进行修改。在使用 import 进行导入时,这些绑定值只能被导入模块所读取,但在 export导出模块中对这些绑定值进行修改,所修改的值也会实时地更新。
// 导出单个特性
export let name1, name2, …, nameN; // also var, const
export let name1 = …, name2 = …, …, nameN; // also var, const
export function FunctionName(){...}
export class ClassName {...}
// 导出列表
export { name1, name2, …, nameN };
// 重命名导出
export { variable1 as name1, variable2 as name2, …, nameN };
// 解构导出并重命名
export const { name1, name2: bar } = o;
// 默认导出
export default expression;
export default function (…) { … } // also class, function*
export default function name1(…) { … } // also class, function*
export { name1 as default, … };
// 导出模块合集
export * from …; // does not set the default export
export * as name1 from …; // Draft ECMAScript® 2O21
export { name1, name2, …, nameN } from …;
export { import1 as name1, import2 as name2, …, nameN } from …;
export { default } from …;