4


我有以下用例:
我想开发一个桌面应用程序,它将在 Raspberry Pi 上运行。我决定使用 Electron 构建桌面应用程序并使用 Angular 作为前端框架 (1)。

我需要为我的应用程序使用一些 npm 模块,以便与 GPIO 引脚或通过以太网 tcp 通信(“net”节点模块)进行通信。我试图在我的 Angular 应用程序中导入这些(例如 import {Socket} from 'net';),但我没有让它们工作。

尝试像这样构造网络套接字时出现以下错误: let client = new Socket();

Uncaught (in promise): TypeError: undefined is not a constructor (evalating 'new net.Socket()')

这是基本架构中的错误吗,我无法在角度前端中运行取决于后端的代码。还是我做错了什么?

我还发现了电容器 (2),它允许调用本机 sdks。我试图实现我自己的插件,但我得到了与上面相同的错误。

谢谢你的帮助。

(1) https://angularfirebase.com/lessons/desktop-apps-with-electron-and-angular/
(2) https://capacitor.ionicframework.com/docs/plugins/

4

1 回答 1

4

似乎您对Electron有点困惑,即使它不是经典client:server模型,...

让我们先了解一下 Electron:


主进程和渲染器进程

主要过程是处理/创建BrowserWindows (Renderer) 以及从一个渲染器窗口到另一个渲染器的一些通信。(也许还有一些其他特殊的东西)

渲染器是您真正运行大部分应用程序的地方。使用节点,您拥有所需的一切。

然后您会注意到您将需要渲染器进程(网页)和主进程之间的通道。

别担心,这里remote派上用场:

Use main process modules from the renderer process.

远程模块提供了一种在渲染器进程(网页)和主进程之间进行进程间通信(IPC)的简单方法。

……即使反过来……

注意:对于反向(从主进程访问渲染器进程),您可以使用webContents.executeJavascript

所以最后你将能够使用双方的所有魔法。

于 2018-05-06T15:46:48.517 回答