如何将功能注入所需文件?

时间:2018-08-01 08:18:17

标签: javascript node.js

我有main.js

function someFunc($smt){
  // Do something
}

require('./script.js');

当我尝试运行script.js时:

someFunc($someParam);

我遇到一个错误:

ReferenceError: someFunc is not defined

如何将函数从父文件导入到需要的文件中?

2 个答案:

答案 0 :(得分:2)

使script.js导出起作用的函数,并让该函数接受参数。

script.js

module.exports = function (f) {
  f();
}

然后在main.js

var script = require('./script.js');

function someFunc(){
  // Do something
}

script(someFunc);

答案 1 :(得分:0)

我认为,这是将自定义参数包含到要求脚本中的更好的解决方案:

// main.js

function someFunc($smt) {
  // Do something
}

$require = require;
// prepare $require for inject

$module = module;
// prepare $module for inject

var script = fs.readFileSync('./script.js', 'UTF8');
script = new Function('someFunc', 'require', 'module', script);
script.call({}, someFunc, $require, $module);

TODO:使全局函数能够为请求的文件准备$ require和$ module变量。然后像这样调用:

const script = include(file/path);