【问题标题】:How to send several arguments with ipcRenderer如何使用 ipcRenderer 发送多个参数
【发布时间】:2018-08-12 03:13:58
【问题描述】:

我想知道如何在 Electron 应用上通过 ipcRenderer 发送多个参数。 我应该发送一个参数数组还是只发送以逗号分隔的所有参数?

谢谢,

【问题讨论】:

  • 我可以看到两者的好处,使用一个对象并传递多个参数。但是,我更倾向于传递一个对象(甚至多个对象作为参数),因为它更接近于使用数据传输对象的一般开发指南。
  • 是的,这就是我最终所做的。就我个人而言,我更喜欢这种方式,因为一旦从另一端接收到数据,组织起来就会变得更加简单。感谢您的评论!

标签: javascript node.js electron


【解决方案1】:

我会推荐一个用于参数传输的对象。因此,您还可以考虑为您的应用程序实现一致的 API:

var _myreq = {
  state: 0, //0 is no error, 4 is error with message, etc.
  message: "", //can include error message (if any)
  data: [0,4,6] //application data for request (String, Array, Object)
};
ipc.send('mychannel-functiona', _myreq);

【讨论】:

  • 为什么比简单地传递你需要的参数更好?
  • 对于大型应用程序,保持一致总是一个好主意。因此,在我的示例中,当我调试一个模块/函数时,我总是知道我的所有消息都遵循相同的结构,包括一致的状态报告(请参阅状态、消息)。对我来说,它使开发和维护更容易。当然,这只是我个人的意见/方法。
  • 好点。对我来说,你的答案只有这个推理是完整的;)
  • 我使用了这种方法,它比数组更容易使用
【解决方案2】:

Docs 清楚地表明您可以将任意数量的参数传递给send

通过通道异步向主进程发送消息,可以 还发送任意参数。参数将在 JSON 中序列化 在内部,因此不会包含任何函数或原型链。

从那时起,您对如何使用这些任意参数没有任何限制。这取决于您的需求、您的代码库风格等。

【讨论】:

  • 嗨,当我使用ipcRenderer.send("copy-file-to-local", (event, fpath, fname)) 发送参数时,ipcMain.on("copy-file-to-local", (_event, fpath, fname) 中的 fname 未定义。 event 和 fpath 都有效,但 fname 未定义。我已经验证了 fname 是在渲染器进程中定义的。你知道是什么原因造成的吗?
【解决方案3】:

我们可以为 ipcRenderer 传递许多参数,你可以参考这个页面:https://electronjs.org/docs/api/ipc-renderer

【讨论】:

    猜你喜欢
    • 2019-10-06
    • 2017-07-08
    • 1970-01-01
    • 1970-01-01
    • 2017-03-26
    • 1970-01-01
    • 2016-06-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多