谷歌發佈 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
閱讀更多 InfoQ 的文章