代码之家  ›  专栏  ›  技术社区  ›  Maximilian Stölzle

使用节点。electron中的js模块

  •  4
  • Maximilian Stölzle  · 技术社区  · 7 年前


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

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

    在尝试这样构造网络套接字时,我遇到以下错误: let client = new Socket();

    Uncaught(在promise中):TypeError:undefined不是构造函数(正在计算“new net.Socket()”)

    这是基础架构中的一个错误吗?我无法在有角度的前端运行依赖于后端的代码。还是我做错了什么?

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

    谢谢你的帮助。

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

    1 回复  |  直到 7 年前
        1
  •  4
  •   EMX    7 年前

    看来你对 电子 ,即使是你,它也不是经典 client:server 模型

    让我们先了解电子:


    主进程和渲染器进程

    这个 主要的 该过程用于处理/创建浏览器窗口(渲染器)和 用于从一个渲染器窗口到另一个渲染器窗口的通信。 (可能还有其他特别的东西)

    这个 渲染器 是您真正运行大部分应用程序的地方。使用节点, 你在那里有你所需要的一切。

    然后,您注意到需要在 渲染器进程(网页)和主进程。

    别担心,这里是 remote 方便快捷:

    Use main process modules from the renderer process.
    

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

    。。。甚至反过来。。。

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

    因此,最终你将能够在双方使用所有的魔法。

    推荐文章