Electron似乎并没有将Node.js用作Web服务器,而只是将其作为运行后台Javascript代码的环境,该代码可以使用节点模块来访问系统。同时,Chromium为该应用提供了一个用户界面,它显示了运行常规沙盒Javascript的常规网页。两者都由Electron可执行文件嵌入,前者直接嵌入(Node.js可以构建为静态库),后者通过libchromiumcontent嵌入。在某种程度上,Node.js是应用程序的控制器部分,而Chromium是视图。
通常,此处用于网页的概念是单页应用程序的概念:网页表示一个应用程序窗口,因此只要该窗口可见(通常在应用程序的整个生命周期内),它就会一直存在。每当需要显示不同的内容时,它都会从Node.js中运行的后台代码请求数据,就像AJAX应用程序向服务器请求数据一样。页面本身不会重新加载,通常将使用Javascript模板来更新内容。
但是,这里实际上并没有服务器/客户端关系,通信实际上可以双向进行。双方都可以使用该
ipc模块相互发送消息(主进程,渲染器)。这些消息可以附加任何参数,不需要显式编码(通常是通过内部使用JSON编码参数来实现的,我没有验证Electron的情况)。在内部,该消息传递是通过平台特定的IPC机制实现的,确切地说是使用libuv。



