我有以下用例:
我想开发一个桌面应用程序,它将在Raspberry Pi上运行。我决定使用Electron构建桌面应用程序,使用Angular作为前端框架(1)。
我需要为我的应用程序使用一些npm模块,以便与GPIO引脚或以太网tcp通信(' net'节点模块)进行通信。我尝试在我的Angular应用程序中导入这些内容(例如从网络导入{Socket};),但我不能让它们正常工作。
尝试构建这样的网络套接字时,我收到以下错误:
let client = new Socket();
Uncaught(承诺):TypeError:undefined不是构造函数(评估' new net.Socket()')
这是基础架构中的错误,我无法在角度前端运行代码,这取决于后端。或者我做错了什么?
我还找到了电容器(2),它允许调用本机sdks。我尝试实现自己的插件,但是我得到了与上面相同的错误。
感谢您的帮助。
(1)https://angularfirebase.com/lessons/desktop-apps-with-electron-and-angular/
(2)https://capacitor.ionicframework.com/docs/plugins/
答案 0 :(得分:3)
看起来你对 Electron 有点混淆,即使你不是经典的client:server
模型,......
主进程用于处理/创建BrowserWindows(渲染器)和 从一个渲染器 - 窗口到另一个渲染器的某些通信。 (也许还有一些其他特殊的东西)
渲染器是您真正运行应用程序的最佳位置。有节点, 你有你需要的一切。
然后您会注意到渲染器进程(网页)和主进程之间需要一个频道。
别担心,这里有remote
派上用场的地方:
Use main process modules from the renderer process.
远程模块提供了一种在渲染器进程(网页)和主进程之间进行进程间通信(IPC)的简单方法。
......甚至反过来......
注意:反过来(从main访问渲染器进程) 过程),您可以使用webContents.executeJavascript。
所以最后你将能够使用双方的所有魔法。