MST

星途 面试题库

面试题:JavaScript在Node编程中模块的导入与导出方式

请阐述在Node.js中,使用JavaScript进行模块管理时,exports、module.exports和export default(若支持)这几种导出方式有什么区别,并举例说明如何正确使用它们进行模块的导出与导入。
37.4万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试

区别

  1. exports
    • exportsmodule.exports的一个引用。它本质上是一个普通的JavaScript对象。
    • 直接为exports赋值(如exports = function() {})会切断与module.exports的联系,导致导出失败,因为Node.js最终是通过module.exports来确定模块导出内容的。
  2. module.exports
    • 这是Node.js中定义模块导出的主要方式。可以将任何类型的值(对象、函数、数组等)赋给module.exports
    • 当模块被加载时,module.exports的值就是该模块的导出内容。
  3. export default(ES6模块,Node.js在特定版本开始支持)
    • 用于ES6模块系统,与Node.js传统的CommonJS模块(exportsmodule.exports)不同。
    • 一个模块只能有一个export default,它允许在导入时不需要知道确切的导出名称,提高了灵活性。

示例

  1. 使用exports
    • 导出模块(exampleExports.js)
exports.add = function(a, b) {
    return a + b;
};
  • 导入模块(mainExports.js)
const example = require('./exampleExports');
console.log(example.add(2, 3));
  1. 使用module.exports
    • 导出模块(exampleModuleExports.js)
module.exports = function(a, b) {
    return a * b;
};
  • 导入模块(mainModuleExports.js)
const multiply = require('./exampleModuleExports');
console.log(multiply(2, 3));
  1. 使用export default(假设在支持ES6模块的Node.js环境)
    • 导出模块(exampleES6.js)
const message = 'Hello, ES6 module';
export default message;
  • 导入模块(mainES6.js)
import msg from './exampleES6.js';
console.log(msg);

需要注意的是,在Node.js中使用ES6模块,需要将文件后缀名改为.mjs,或者在package.json中添加"type": "module"