【问题标题】:Node Js application in client machine客户端机器中的 Node Js 应用程序
【发布时间】:2018-07-21 14:30:50
【问题描述】:

我想制作一个 Node js 应用程序,它可以在每台机器上本地运行,而不管使用的操作系统如何。例如,如果我在 node js 中构建一个待办事项列表应用程序,当我在浏览器中键入 www.todo.app 时,该待办事项应用程序应该运行。我尝试使用 Electron Js 来制作应用程序,但问题是,它需要额外的机器内存。我知道 Electron 使用内置的 chrome 浏览器运行。如果我已经在机器上安装了 chrome 浏览器,为什么 Electron 还要在该机器上安装另一个 chrome。

所以,我的问题是,如果我有机会做一个在机器浏览器中本地运行的节点 js 应用程序。

【问题讨论】:

  • 那么,你基本上需要建一个网站吗?那是客户端的Javascript。 Node JS 是一个运行时,它可以执行 Javascript 代码并提供对本地 OS 功能(如文件系统、套接字、进程等)的访问。您显然无法在网站(Web 应用程序)的上下文中访问这些资源,但您可以使用 Javascript 构建交互式应用程序,获取数据,将其保存在客户端存储等。但它不会是 Node JS 应用程序,它只是一个 Javascript 应用程序,通过 HTML 页面加载。
  • 实际上并不是一个网站。我喜欢编写一个在客户端离线运行的 Web 应用程序。如果用户打开他的电脑,打开浏览器,输入 www.todo.app,应用程序应该可以在没有互联网连接的情况下运行。我想使用 node js 来访问和修改文件。如果我在命令提示符下键入 node server.js,node js 服务器开始运行。但我不希望我的用户打开命令提示符并键入 node server.js 来运行 todo 应用程序。随着电脑启动,server.js 也应该启动。
  • 好的,您想要完成的任务很多,我不确定您之前部署客户端应用程序的经验。您最好的选择仍然是 Electron,因为它包含了许多您需要手动构建和部署的组件:安装程序、更新程序、节点运行时等。所以,如果您不熟悉这一切,我会说坚持使用 Electron,不要担心你认为是内存开销。这实际上就像打开另一个 Chrome 标签页,所以没什么大不了的。不确定 Electron 是否支持安装在机器启动时运行的代理,但您可以研究一下。
  • 伟大的应用程序,例如 Visual Studio Code,是使用 Electron 构建和部署的,因此它是一个有价值的工具,应该可以满足您的大部分需求并帮助您快速轻松地开始。

标签: javascript node.js express


【解决方案1】:

这里的问题实在是太多了。

我尝试过 Electron Js 来制作应用程序,但问题是,它需要额外的机器内存。

虽然 electron 应用程序的内存消耗通常比高度优化的原生应用程序更大,但它与运行 chrome 独立应用程序相当。因此,如果用户使用 chrome 查看 Web 应用程序,则从电子切换到基于节点的应用程序(用户需要在本地运行)不会为您节省很多内存,尤其是。

如果我已经在机器上安装了 chrome 浏览器,为什么 Electron 还要在该机器上安装另一个 chrome。

基本上,捆绑运行时可确保您可以控制应用程序中使用的 chrome 版本,而不管用户在他/她的机器上安装了什么。

这也意味着您测试的浏览器引擎是用户使用的浏览器引擎(在所有平台上)。

electrino 这样的一些项目试图通过使用已安装的浏览器引擎来解决这个问题,方法是使用已安装的浏览器引擎来支持桌面应用程序,但据我所知,这些努力都还没有准备好生产。

所以,我的问题是,如果我有机会做一个在机器浏览器中本地运行的节点 js 应用程序。

说了以上所有内容,没有什么能真正阻止您构建和分发基于节点的 Web 应用程序。

对于针对技术(或技术倾向)用户的应用程序,人们通常将这些应用程序分发为 npm 包或特定于平台的包管理器(例如,用于 windows 的 scoop、用于 mac 的 homebrew、用于 linux 的 snaps 等)。

您还可以使用像 zeit 的 pkg 这样的解决方案将您的应用程序作为独立的二进制文件分发。

据我所知,任何适用于桌面操作系统的应用商店都不允许分发 Web 应用程序。

【讨论】:

  • 感谢您的详细解释。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-29
  • 2020-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-05
相关资源
最近更新 更多