Google 推出Node 應用Web 渲染界面Carlo
在剛剛發布的 2018 JavaScript現狀調查報告中,可能有人注意到裡面提到了一個新的Headful Node應用框架—— Carlo 。Carlo是Google Labs近日推出的一個開源項目,官方將其描述為“ Node應用Web渲染界面”。
Carlo為Node應用提供Chrome渲染功能,使用 Puppeteer 項目與本地安裝的瀏覽器實例進行通信,並實現遠程調用基礎架構,以便在Node和Chrome之間進行通信。
不同於Electron和NW.js,Carlo並不會嘗試將特定版本的Chrome和Node.js打包在一起,而是依賴於用戶電腦上已安裝的任意版本的Chrome ,該項目的動機之一是演示本地安裝的瀏覽器如何與開箱即用的Node一起使用。此外,Carlo會分離Node v8和Chrome v8引擎,提供可維護的model ,能夠獨立更新底層組件。
Carlo並不提供構建真正桌面應用的功能,像是修改應用圖標或自定義菜單,Carlo更專注於生產力和Web/Node的互操作性。不過,你也可以使用pkg將Carlo應用打包到可執行二進製文件中。
示例- 顯示本地環境
Save file as example.js
const carlo = require('carlo');(async () => { // Launch the browser. const app = await carlo.launch(); // Terminate Node.js process on app window closing. app.on(' exit', () => process.exit()); // Tell carlo where your web files are located. app.serveFolder(__dirname); // Expose 'env' function in the web environment. await app.exposeFunction(' env', _ => process.env); // Navigate to the main page of your app. await app.load('example.html');})();
Save file as example.html
<script>async function run() { // Call the function that was exposed in Node. const data = await env(); for (const type in data) { const div = document.createElement('div'); div. textContent = `${type}: ${data[type]}`; document.body.appendChild(div); }}</script><body onload="run()">
運行應用
node example.js