首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用Electron (Atom Shell)时,客户端/服务器模型是什么?

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

Stack Overflow用户
提问于 2014-07-05 13:12:01
回答 1查看 22.7K关注 0票数 74

我正在尝试理解Electron (以前的Atom Shell)是如何工作的。

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

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

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

有人能给我一些我正在尝试做的事情的起点吗?浏览器如何与节点运行时(他们称之为“客户端”)通信?告诉它“嘿,获取ID为12345的记录”,客户端会返回呈现的超文本标记语言,还是浏览器只会返回一段JSON并通过JavaScript模板引擎呈现它?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-08 04:12:41

JavaScript似乎并没有使用Node.js作为web服务器,而仅仅是作为运行后台电子邮件代码的环境,这些代码可以使用节点模块来访问系统。同时,Chromium为应用程序提供了一个用户界面,它显示运行通常沙箱JavaScript的常规网页。两者都是由Electron可执行文件嵌入的,前者直接(Node.js可以构建为静态库),后者通过libchromiumcontent。在某种程度上,Node.js是应用程序的控制器部分,而Chromium是视图。

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

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

票数 72
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24583204

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档