Node.js需要其他文件的功能,而无需执行[保留]时执行的整个文件

问题描述 投票:0回答:2

我是Node.js的初学者。我的问题是:有没有一种方法可以要求另一个文件中的功能而不实际执行整个另一个文件?

编辑

抱歉,这个问题不清楚,这是我写来帮助理解的一个示例:文件test2:

let counter = 0;
let zero = 0;

(() => {
    zero++;
})();

const add = () => {
    counter++;
    return (`counter is ${counter} and zero is ${zero}`);
}

module.exports = {
    add: add
}

文件test1:

for (let i = 0; i < 10; i++) {
    console.log(require('./test2').add());
}

输出:

counter is 1 and zero is 1
counter is 2 and zero is 1
counter is 3 and zero is 1
counter is 4 and zero is 1
counter is 5 and zero is 1
counter is 6 and zero is 1
counter is 7 and zero is 1
counter is 8 and zero is 1
counter is 9 and zero is 1
counter is 10 and zero is 1

您可以看到变量零已经增加,因为已经执行了test2中的函数。我实际上没有使用全局变量就解决了这个问题,但是我很好奇是否有办法避免不必要的执行。谢谢。

node.js function file require execute
2个回答
0
投票

您可以使用module.exports

解构您想使用的必需功能,

let myFun = function() { ... }; or let myFun = () => { ... }
let myFun2 = function() { ... }; or let myFun2 = () => { ... }
exports.myFun = myFun;
exports.myFun2 = myFun2;

导出(或“暴露”)内部作用域函数myFun和myFun2。

您想在任何地方使用的功能都可以称呼您

同时使用,

const {myFun, myFun2} = require('./mymodule');
myFun();
myFun2();

要使用任何一个,

const{myFun} = require('./mymodule');
myFun();

希望有帮助。


0
投票

[您需要先加载文件的内容,然后解析它以仅“提取”您想要的功能(假设它不依赖于该文件中的任何内容或那里的要求)。

如果您很好地了解目标函数,则可以使用简单的正则表达式来解决这个问题,但这容易出错。

[最好使用某些解析器,例如Acorn,然后在AST树中找到该函数,然后使用new Function()(或eval()或其他任何方式)在本地重新创建它。] >

© www.soinside.com 2019 - 2024. All rights reserved.