你好。
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的了解对于这样的任务来说太弱了。
答案 0 :(得分:0)
从技术上讲,您始终可以通过字符串执行对象的方法:
let basicObject = {
method: () => console.log('method was executed')
}
let methodName = 'method';
basicObject[methodName](); //prints "method was executed"
也许你可以将它整合到某个地方。