Node中的动态函数调用(没有框架)

时间:2017-12-11 10:13:20

标签: javascript php node.js

你好。

2周前我开始研究Node。 我决定将我的服务器构建在MVC上作为培训。 我曾经用PHP做过。 我无法实现函数调用,其名称由程序计算。

档案 router.js

var maincontroller = require("../controllers/maincontroller");
var storecontroller = require("../controllers/storecontroller");
var additionalcontroller = require("../controllers/additionalcontroller");

module.exports = {
    findMainRoute: function (globalarray) {
    ... code        
                var nameOfController = temparray[0];
                var nameOfFunction = temparray[1];
                // var execFunction = nameOfController + '.' + nameOfFunction +'(globalarray);';
                // eval(execFunction);
        ... code
    }
}

在该文件中,程序计算控制器的名称以及路由器需要运行的功能的名称。在注释行中,使用EVAL调用此函数。这种方法有效,但不适合我。

当它工作时,将调用其中一个控制器。 控制器 maincontroller.js

module.exports = {
    processingMain: function (globalarray) {
    ... code
        globalarray.readFile = globalarray.mainDirectory + '/app/views/0000_main.html';
        globalarray.contentType = 'text/html';
    ... code
    }
}

如果呼叫不是动态的,我会像这样写一个对控制器的调用:

maincontroller.processingMain(globalarray);

我应该编写哪些JS / Node代码来用PHP函数模拟call_user_func_array替换eval? 在3天内,我尝试了100种应用程序应用,呼叫,新功能。似乎我对Js的了解对于这样的任务来说太弱了。

1 个答案:

答案 0 :(得分:0)

从技术上讲,您始终可以通过字符串执行对象的方法:

let basicObject = {
  method: () => console.log('method was executed')
}

let methodName = 'method';

basicObject[methodName](); //prints "method was executed"

也许你可以将它整合到某个地方。