CommonJS模块导出方式对比

CommonJS 模块系统中,主要有两种导出方式:module.exportsexports 。这两种方式都用于将代码中的变量、函数或对象导出,以便在其他模块中使用

module.exports

module.exportsCommonJS 模块系统的基本导出方式,可以将单个值(如一个函数、对象或类)导出。通过这种方式,导出时可以指定任何有效的 JavaScript 值,模块的默认导出就是由 module.exports 指定的

用法示例:

// math.js
function add(a, b) {
  return a + b
}

module.exports = add // 导出一个函数

导入示例:

// main.js
const add = require('./math.js')
console.log(add(2, 3)) // 5

exports

exportsmodule.exports 的一个简写,用于方便地导出多个属性。exports 是一个对象,最常用的方式是将多个变量、函数或对象作为属性添加到 exports 对象中进行导出

用法示例:

导入示例:

总结

  1. 导出的形式:

    • module.exports 可以导出单个值(例如函数、类或对象),被视为模块的默认出口

    • exports 通常用于导出多个属性和函数(即一个对象的多个方法)

  2. 混合使用:

    • 不建议在同一个模块中同时使用 module.exportsexports 。如果你将 exports 赋值为另一个对象,那么它将不再引用 module.exports ,因此这些赋值将不会生效

  3. 可读性:

    • 使用 module.exports 导出单个值时,代码意图更加明确,因为它表明这是一个默认导出

    • 使用 exports 导出多个属性时,结构会更清晰,便于理解

Last updated

Was this helpful?