gpt4 book ai didi

javascript - 使用 Electron (Atom Shell) 时的客户端/服务器模型是什么?

转载 作者:IT老高 更新时间:2023-10-28 21:50:25 26 4
gpt4 key购买 nike

我想了解一下 Electron (以前的 Atom Shell)有效。

我来自一个传统的 MVC 风格的 Web 应用程序,其中浏览器通过 路由系统 调用 Controller Action,然后 Controller 从存储(文件系统,数据库,...)并呈现一个 View,它被发送回浏览器。一些 Action 可能会返回 JSON,因为它们是通过 JavaScript/AJAX 调用的,而不是浏览器实际导航到它们。

我想创建它,但作为跨平台桌面应用程序。我知道 Atom Shell 结合了 Chromium-Browser 和 Node.js/v8 运行时,但我不确定它们将如何通信。

我想我可以在网络服务器上运行一个完整的服务器(基本上是一些 Node.js HTTP 中间件,如 Express),但这会创建一个网络可访问的服务器(这也可能会触发防火墙)——这是我的原因之一想做一个桌面应用程序恰恰是为了避免运行一个真实的服务器。基本上就像“普通”桌面应用程序中的 MVP/MVVM 模式。

有人可以给我一些我正在尝试做的事情的起点吗?浏览器将如何与 Node 运行时(他们称之为“客户端”?)进行对话以告诉它“嘿,获取我的 ID 为 12345 的记录”,客户端会返回呈现的 HTML,还是浏览器只会得到一个 blob JSON 的返回并通过 JavaScript 模板引擎呈现?

最佳答案

Electron 似乎没有将 Node.js 用作 Web 服务器,而只是用作运行后台 JavaScript 代码的环境,此代码可以使用 Node 模块来访问系统。同时,Chromium 为应用程序提供了一个用户界面,它显示了运行普通沙盒 JavaScript 的常规网页。两者都被 Electron 可执行文件嵌入,前者直接(Node.js 可以构建为静态库),后者通过 libchromiumcontent .在某种程度上,Node.js 是应用程序的 Controller 部分,而 Chromium 是 View 。

通常,此处用于网页的概念是 single-page applications。 :一个网页代表一个应用程序窗口,因此只要该窗口可见(通常在应用程序的整个生命周期内),它就会一直存在。每当它需要显示不同的东西时,它都会从运行在 Node.js 中的后台代码请求数据,就像 AJAX 应用程序从服务器请求数据一样。页面本身不会重新加载,通常会使用 JavaScript 模板来更新内容。

这里并没有真正的服务器/客户端关系,但是通信实际上可以双向进行。双方可以使用 ipc 模块互相发送消息( main processrenderer )。这些消息可以附加任何参数,这些不需要显式编码(通常这是通过在内部使用 JSON 对参数进行编码来实现的,我没有验证 Electron 是否是这种情况)。在内部,该消息传递是通过特定于平台的 IPC 实现的。机制,使用 libuv准确的说。

关于javascript - 使用 Electron (Atom Shell) 时的客户端/服务器模型是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24583204/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com