BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

node-webkit:用HTML5+JS开发跨平台的桌面应用

| 作者 杨赛 关注 3 他的粉丝 发布于 2013年7月8日. 估计阅读时间: 5 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

过去一年间,Node.js吸引了越来越多的目光;同时,一个叫做node-webkit的项目在Github上引起了越来越多的关注。在启动一年之后,node-webkit从一个默默无闻的项目成功跻身GitHub C++项目关注度排行榜前五强。在2012年的沪JS大会上,该项目的开发者之一赵成做过一个分享,对node-webkit是什么进行了一个介绍。2013年4月,台湾工程师钱逢祥在台湾的开源大会上也介绍了这个项目:这年头,你只需要懂node-webkit!另一方面,英文JavaScript圈子的知名社区JSJ也对node-webkit进行过讨论。最近吸引了很多开发者的新兴IDE工具Light Table,也是基于node-webkit开发的。

node-webkit是个什么样的项目,引起这样多的关注?近日,InfoQ编辑见到了这个项目的发起人Rogerwang,向他了解了一些有关这个项目的情况。

node-webkit项目发起人简介:Rogerwang,真名王文睿,英特尔开放源码技术中心(OTC)的软件架构师。最开始,node-webkit是一个业余项目。现在,Roger可以在工作时间进行这个项目的开发,而且有一个实习生跟他一起工作。

InfoQ:根据我的理解,node-webkit是通过Node.js和WebKit技术的融合,提供一个跨Windows、Linux、OS X平台下的客户端应用开发的底层框架,跟移动终端上的PhoneGap等项目的原理类似,不知这么理解是不是正确?你自己如何介绍node-webkit的目的和实现原理?

王文睿:是的。通过Node.js和WebKit技术的融合,开发者可以用HTML5技术编写UI,同时又能利用Node.js平台上众多library访问本地OS的能力,最终达到用Web技术就可以编写桌面应用的目的。

实现上是基于Chromium项目的Content Layer构建(Chromium Browser也同样基于Content Layer);实现上的特点是把Node.js的消息循环(libuv)和Chromium Renderer进程的消息循环合并到一起,因为这样才能从DOM(HTML)中直接调用Node.js提供的函数;把Node.js使用的V8引擎和Chromium的V8引擎合并,使得Node.js的Javascript和DOM里面的Javascript可以互相访问;另外因为是支持本地应用,所以安全模型和Web程序有很大不同:node-webkit程序可以做web应用不允许做的很多事情,除了通过node.js访问本地OS以外,还可以进行跨域访问等操作。

InfoQ:你是怎样开始了解WebKit和Node.js的?怎么就想到将这两个技术结合到一起,提供一个这样的方案呢?

王文睿:平时的工作和WebKit有关,所以平时也会去了解Web领域相关的技术,所以大概了解Node.js项目的状况。2011年底的一天,我们同事在工作会议上讨论如何为WebKit或者web runtime添加扩展接口API的时候有了这个想法。

InfoQ:你自己如何评价目前项目的完成状态?当前的node-webkit适合开发哪些需求的客户端应用,不适合开发哪些需求的客户端应用?

王文睿:现在已经达到一定的成熟度。有不少公司和各种项目基于node-webkit开发。node-webkit适合了解Web技术(JS/HTML/CSS)的开发者开发各种桌面应用,而且直接支持3种主流桌面平台。

目前它还不支持移动平台。另外也不支持嵌入到其他C++软件中。

InfoQ:node-webkit目前在Github上已经有将近4000个star,360个fork。这个项目目前来自你们团队和外部团队的贡献情况如何?

王文睿:绝大部分代码来自于内部的两个开发者。另一位开发者(Zhao Cheng)在这里实习的半年多期间主要的贡献是开发native UI支持,以及将架构从CEF迁移到Content Layer。

我们一直欢迎和鼓励外部贡献代码。目前来自外部的代码比较少,原因可能是我们的用户大部分是Web开发者,而我们的代码却是C/C++编写的。

InfoQ:你对node-webkit的下一步计划是什么?是否有计划根据这个项目打造一些更加易用的产品?

王文睿:目前的重点主要是进一步增强功能(我们的用户在GitHub的issue上报了很多的feature request)和壮大社区(希望有更多的开发人员加入我们的开源项目)。node-webkit平台本身非常灵活,我们欢迎大家利用node-webkit提供多样的产品和服务。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

这不就是app.js那个项目吗? by gaf king

这不就是app.js那个项目吗?

这不就是app.js那个项目吗? by gaf king

这不就是app.js那个项目吗?

Re: 这不就是app.js那个项目吗? by 庄 与邻

吐槽一下..你这种不考据一下..就乱喷的人..app.js 是 2012 5月份出来的. node-webkit 是 2011年 11 月份出来的....不信自己翻github 的提交记录

非常棒的项目 by lai zhiqiang

node-webkit无疑是一个非常棒的项目,我目前使用node-webkit开发了一个web前端编译工具Koala (koala-app.com/),使用web技术就能开发桌面应用,极大地降低了开发成本。

非常棒的项目 by lai zhiqiang

node-webkit无疑是一个非常棒的项目,我目前使用node-webkit开发了一个web前端编译工具Koala (koala-app.com/),使用web技术就能开发桌面应用,极大地降低了开发成本。

非常棒的项目 by lai zhiqiang

node-webkit无疑是一个非常棒的项目,我目前使用node-webkit开发了一个web前端编译工具Koala (koala-app.com/),使用web技术就能开发桌面应用,极大地降低了开发成本。

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

6 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT