Google 推出 Node 应用 Web 渲染界面 Carlo

王练
 王练
发布于 2018年11月23日
收藏 30

在刚刚发布的 2018 JavaScript 现状调查报告中,可能有人注意到里面提到了一个新的 Headful Node 应用框架 —— Carlo 。Carlo 是 Google Labs 近日推出的一个开源项目,官方将其描述为 “ Node 应用 Web 渲染界面”。

Carlo 为 Node 应用提供 Chrome 渲染功能,使用 Puppeteer 项目与本地安装的浏览器实例进行通信,并实现远程调用基础架构,以便在 Node 和 Chrome 之间进行通信。

不同于 ElectronNW.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
本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 开源中国社区 [http://www.oschina.net]
本文标题:Google 推出 Node 应用 Web 渲染界面 Carlo
加载中

精彩评论

kaffa
kaffa
共享运行时,分发size更小

最新评论(8

zicjin
zicjin

引用来自“zicjin”的评论

没看懂和直接使用 Puppeteer 有什么区别

引用来自“iman123”的评论

两者定位不同,Puppeteer 提供类似Selenium类似的功能,例如截图、pdf、测试等,carlo 底层使用Puppeteer,提供nodejs 和 浏览器 交互特性,参考 https://github.com/GoogleChromeLabs/carlo


Carlo provides Node applications with Google Chrome rendering capabilities, communicates with the locally-installed browser instance using the Puppeteer project, and implements a remote call infrastructure for communication between Node and the browser.
"提供nodejs 和 浏览器 交互特性" 不就是 Puppeteer 做的事情么?在node上执行“截图、pdf、测试” 哪个不是在"提供nodejs 和 浏览器 交互特性" ?
i
iman123

引用来自“zicjin”的评论

没看懂和直接使用 Puppeteer 有什么区别
两者定位不同,Puppeteer 提供类似Selenium类似的功能,例如截图、pdf、测试等,carlo 底层使用Puppeteer,提供nodejs 和 浏览器 交互特性,参考 https://github.com/GoogleChromeLabs/carlo


Carlo provides Node applications with Google Chrome rendering capabilities, communicates with the locally-installed browser instance using the Puppeteer project, and implements a remote call infrastructure for communication between Node and the browser.
zicjin
zicjin
没看懂和直接使用 Puppeteer 有什么区别
宇天
宇天
这个好,支持
kaffa
kaffa
共享运行时,分发size更小
曹江华
曹江华
还必须要装chrome才能运行?
开源中国首席装逼王
玩法又更多了
ViperWhip
ViperWhip
谷歌版的WebBrowser控件
返回顶部
顶部