javascript - 发送对象方法作为 NodeJS 响应

标签 javascript html node.js express

我的要求是使用express发送一个对象方法作为响应。这样我就可以在前端创建动态 onClick js 代码。

const data = {
  message: "Hi",
  click: () => {
    console.log("Hello world");
  }
};
res.send(data);

我尝试发送,但该方法无法发送。上述示例代码在前端JS中的日志如下。

{message: "Hi"}

我的解决方法是将整个函数作为字符串发送,然后使用函数构造函数来解析该字符串。它有效,但我读了其他论坛条目,其中说将字符串解析为函数是非常糟糕的做法。

请建议我解决这个问题的方法。

最佳答案

你基本上有两个选择:

  1. 按原样使用 Function 构造函数。 如果您可以信任从谁那里获取要转换为代码的字符串,那就没问题了。当您不需要将字符串转换为函数(例如,有更好的方法)或使用来自您不信任的来源的字符串时,您不应该使用它。

  2. 根本不发送动态处理程序。相反,在您的页面中包含的脚本中包含一组标准处理程序:

    const handlers = {
        sayHi() {
            alert("Hello world");
        },
        doSomething() {
            // ...
        },
        doSomethingElse() {
            // ...
        }
    };
    

    并发送回处理程序的名称("sayHi""doSomething""doSomethingElse")而不是处理程序的代码。然后通过 handlers[name] 使用处理程序。

关于javascript - 发送对象方法作为 NodeJS 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59704787/

相关文章:

javascript - 展开时沿 TreeView 添加垂直线

node.js - 语法错误: Unexpected token { when compiling my node. js代码

node.js - MongoDB 初始连接慢

javascript - Node.js mysql 查询传递给 async.waterfall 中的下一个函数

javascript - 附加另一个时删除子表

javascript - 尝试通过 JQuery 进行 2 个 Ajax 调用,然后在数据前添加

javascript - 如果用户已登录,如何限制后退按钮,或直接在angularjs中访问登录页面

jquery - 用表单附加 jquery

html - 如何使按钮组响应?

linux - 由于Cordova和Node.js无法安装Audacity?