代码之家  ›  专栏  ›  技术社区  ›  Turar Abu

如何在需求文件中注入函数?

  •  0
  • Turar Abu  · 技术社区  · 6 年前

    我有 main.js :

    function someFunc($smt){
      // Do something
    }
    
    require('./script.js');
    

    当我试着跑的时候 script.js :

    someFunc($someParam);
    

    我有个错误:

    ReferenceError: someFunc is not defined
    

    如何将函数从父文件导入到所需文件?

    2 回复  |  直到 6 年前
        1
  •  2
  •   Jed Richards    6 年前

    制造 script.js 导出完成工作的函数,并让该函数接受参数。

    script.js脚本

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

    然后进入 main.js

    var script = require('./script.js');
    
    function someFunc(){
      // Do something
    }
    
    script(someFunc);
    
        2
  •  0
  •   Turar Abu    6 年前

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

    // 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);