@levinzhang
2018-11-18T20:59:40.000000Z
字数 1045
阅读 573
by
谷歌发布Carlo的早期版本,这是谷歌实验室用来创建Node.js应用的实验性项目。Carlo使用Puppeteer实现Node.js应用和Chrome Web浏览器之间的通信。
谷歌发布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的贡献指南和谷歌的开源行为指南。
查看英文原文:Google Introduces Carlo, a Node.js Web Rendering Surface