MST

星途 面试题库

面试题:Node.js自定义模块创建与导出基础

在Node.js中,如何创建一个自定义模块并通过exports和module.exports两种方式导出一个函数,分别举例说明。如果在同一个模块中同时使用exports和module.exports,会发生什么情况?
23.9万 热度难度
前端开发Node.js

知识考点

AI 面试

面试题答案

一键面试

创建自定义模块并通过exports导出函数

  1. 创建一个文件,例如myModule.js
// myModule.js
function myFunction() {
    console.log('This is my custom function from exports');
}
exports.myFunction = myFunction;
  1. 在另一个文件中引入该模块并使用:
// main.js
const myModule = require('./myModule');
myModule.myFunction();

创建自定义模块并通过module.exports导出函数

  1. 同样在myModule.js文件中:
// myModule.js
function myFunction() {
    console.log('This is my custom function from module.exports');
}
module.exports = myFunction;
  1. main.js中引入并使用:
// main.js
const myFunction = require('./myModule');
myFunction();

同时使用exports和module.exports的情况

  1. 示例代码如下:
// myModule.js
function func1() {
    console.log('Function from exports');
}
exports.func1 = func1;

function func2() {
    console.log('Function from module.exports');
}
module.exports = func2;
  1. main.js中引入:
// main.js
const myModule = require('./myModule');
// myModule.func1; // 此处myModule.func1为undefined
myModule(); // 会执行func2,因为module.exports最终覆盖了exports

当同时使用exportsmodule.exports时,module.exports会最终决定模块导出的内容。exports本质上是module.exports的一个引用,但是如果直接给module.exports赋值一个新的对象、函数等,就会切断与exports的联系,最终导出的是module.exports所指向的内容。