谷歌发布 Carlo 的早期版本,这是谷歌实验室用来创建 Node.js 应用的实验性项目。Carlo 使用 Puppeteer 实现 Node.js 应用和 Chrome Web 浏览器之间的通信。
在使用 Web 技术创建桌面应用方面,Electron 目前是主导性的技术。与 Electron 不同,Carlo 并不会尝试将特定版本的 Chrome 和 Node.js 打包在一起,而是依赖于终端用户的电脑上已安装的任意版本的 Chrome。
Carlo 并没有提供构建真正桌面应用的功能,比如修改浏览器视图的名称、菜单或图标。相反,Carlo 更像是在本地应用服务器上运行应用并自动在 Chrome 中浏览该应用。
Puppeteer 是谷歌的浏览器自动化项目,它使用了 DevTools 协议,Carlo 使用这种机制与 Chrome 浏览器实例进行通信。
基于 Carlo 的应用并不需要在每次 Chrome 升级的时候发布更新。这种方式的潜在缺点就是可能会破坏应用程序中的功能。如果无法定位到 70 或更高版本的 Chrome,应用程序将会返回一个错误。
推荐使用 pkg 将 Carlo 应用打包到可执行二进制文件中。与之不同,Electron 提供了丰富的应用程序构建基础设施。
Carlo 可能会重新引发什么是 Web、什么不是 Web 的争论。谷歌的工程师 Alex Russell 曾说过像 Electron 这样的环境不是 Web 的观点:
很多的平台都试图在允许开发人员使用 Web 的客户端 - 服务端技术的前提下,让我们获取一些“额外(exotic)”的能力。按照这种方式,他们不得不抛弃共享价值体系中的一个或多个方面。这些方式说不上糟糕,甚至其中有很多人可以说是技术天才,但这并不是 Web。
Carlo 所倡导的方式应该非常适合渐进式 Web 应用(Progressive Web Apps)。为桌面应用程序寻求完整功能的开发人员可能会倾向于继续使用 Electron。
Carlo 可以在 Apache 2 开源协议下使用。现在,官方鼓励通过Carlo GitHub 项目进行贡献,贡献过程应该遵循 Carlo 的贡献指南和谷歌的开源行为指南。
查看英文原文:
https://www.infoq.com/news/2018/11/carlo-google-nodejs