angular - 部署/运行: local Express web-server and local client-side angular app that sends ajax requests to this local web-server

标签 angular express electron web-deployment nwjs

我有:

  • 基于节点Express的Web服务器,应仅在用户的本地计算机上运行
  • 一个 Angular 客户端应用程序,它将GET Http请求发送到该本地Web服务器以获取JSON中的数据并将其显示在浏览器中

  • 在我的开发环境中,我将按以下步骤启动它们:
  • npm run dev(在快速Web服务器的目录上)。它产生:“Express服务器监听端口7000”,并准备接收
  • 请求
  • npm start(在客户端应用程序的目录上)。这将在浏览器中启动客户端应用程序。然后,我可以键入,单击按钮并显示数据(从Web服务器)。

  • 我想以一种方便的方式为最终用户提供此系统:
  • 目标环境是Windows。理想情况下,它们应该运行单个安装(例如从.msi文件)。
  • 安装完成后,他们应该能够使用一个命令来启动系统(Web服务器和客户端应用程序)。
  • 最终用户不应该了解有关node,npm等的任何信息,也不应该知道这两个组件的主目录-实际上,他们甚至可能不知道正在使用本地Express Web服务器。 。

  • 重要的是不仅要方便安装,而且要能够用一个用户命令启动两个系统组件。当用户关闭客户端应用程序时,理想情况下,还应该关闭快速Web服务器。

    我玩过electron.js,但似乎它不会部署并启动 Electron 应用程序所需的Express服务器。还阅读了有关nw.js的信息,但没有看到与我的方案类似的任何示例。

    我知道也许吗???我可以将服务器端实现为 Electron 渲染器进程之一,而不是HTTP,而是使用进程间通信(IPC)与涉及此主要过程的客户端应用程序(另一个渲染器进程)进行通信。但是,这将需要对该现有系统进行大量返工,这将需要大量时间并且目前无法负担。

    部署和使用场景(上面的1、2、3)是否可能,以及用于实现这种部署和执行场景的最佳工具是什么?

    您能否提供任何此类实现的引用?和/或理想情况下小的/完整的代码示例?

    最佳答案

    是的,你可以做到。您可以在生产中打包 Electron 应用程序和 express 服务器。在开发中,您需要开发Express应用程序并使用nodejs child-process module执行它。在这里,您可以使用 exec command spawn command(我更喜欢exec,易于使用)。您可以从您的 Electron main进程开始表达过程。等到快速服务器设置完毕,然后再继续使用该应用程序。

    对于木偶,我建议您看看this github thread。他们说要在main process上执行p操作,并通过electron IPC传达mainrenderer进程

    对于构建Windows安装程序,我认为最好使用electron-builder并生成带有签名证书的nsis installer

    关于angular - 部署/运行: local Express web-server and local client-side angular app that sends ajax requests to this local web-server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61282810/

    相关文章:

    node.js - 在我的前端和后端之间创建一个 webhook

    javascript - 在express nodejs中将图像文件转换为base64

    javascript - Electron 窗口尺寸与屏幕分辨率

    javascript - electron.remote 在渲染过程中未定义

    angularjs - 为什么 Angular Material2 使用 ViewEncapsulation.None 而不是 Emulated 或 Native?

    angular - mat-menu-item 在 Protractor e2e 测试中不可点击

    angular - 使用组件而不导入

    javascript - Node 应用程序路由不起作用

    javascript - 使用 webRTC 获取屏幕列表并选择要在 Electron 中记录的屏幕

    angular - 没有ManagedZone的提供者