写点什么

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

2013 年 7 月 07 日

过去一年间,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 提供多样的产品和服务。

2013 年 7 月 07 日 03:3930761

评论

发布
暂无评论
发现更多内容

架构师训练营 1 期 -- 第九周作业

曾彪彪

极客大学架构师训练营

Redis也能搞定时任务,你们要讲武德

周老师

Java 编程 程序员 架构 面试

释放数字化活力 高质量建设数字中国

CECBC区块链专委会

数字经济

输入法B端市场转化:百度推动产业智能化的新路径

脑极体

【JDD京智大咖说】AI 未来,路在何方?NLP、CV 技术的探索与展望

京东科技开发者

人工智能 CV nlp

互联网券商系统搭建建议书

软件开发大鱼V15724971504

国际配售 港股交易系统开发 证券交易系统 IPO系统开发 金融平台搭建

数字人民币究竟是什么

CECBC区块链专委会

数字货币

号外!5G+X联创营华为云官网上线,5G 创业春天来了!

华为云开发者社区

华为 程序员 AI 5G

阿里P8架构师吐血整理的《SpringBoot+Vue全栈开发实战》文档资料

Java架构之路

Java 程序员 架构 面试 编程语言

第九周学习性能优化 3 总结

三板斧

极客大学架构师训练营

《迅雷链精品课》第六课:主流区块链数据存储分析(一)

迅雷链

区块链

JVM运行时数据区,你真得好好学一学

Simon郎

JVM Java 分布式

石、火、水:从OriginOS透视移动系统进化论

脑极体

架构师训练营 1 期 - 第九周 - 性能优化 3

三板斧

3年Java开发经验从阿里、美团、滴滴面试回来,想和Java程序员谈一谈感悟及面经

Java架构之路

Java 程序员 架构 面试 编程语言

微服务手册:高速查询?除了Redis我们还有另外的选择

互联网应用架构

redis 微服务 springboot Caffeine 高速缓存

DataOps系列丨DataOps理念与设计原则

DataPipeline

大数据

DataPipeline 王睿:业务异常实时自动化检测 — 基于人工智能的系统实战

DataPipeline

大数据

企业工作流设计原则及多项目整合开发注意事项

Marilyn

敏捷开发 工作流 企业开发

MySQL 连接为什么挂死了?

华为云开发者社区

微服务 数据 存储

6. 自定义容器类型元素验证,类级别验证(多字段联合验证)

YourBatman

Hibernate-Validator Bean Validation 多字段联合验证

京东T8Java架构师总结整理的15w字的Java面试手册,2021年金三银四不愁涨不了薪!

Java架构之路

Java 程序员 架构 面试 编程语言

【得物技术】浅谈分布式事务中间件Seata

得物技术

开源 分布式事务 中间件 解决方案 seata

架构师训练营 W05 作业

Geek_f06ede

DataOps系列丨DataOps的组织架构与挑战

DataPipeline

大数据

AI技术在音乐类产品中的应用场景

HIFIVE嗨翻屋

人工智能 AI 音乐 音乐制作

32核打赢AMD64核 英特尔Ice Lake为HPC提供强劲性能

intel001

DataOps系列丨数据的「资产负债表」与「现状」

DataPipeline

大数据

区块链+供应链,双链融合开启新时代

CECBC区块链专委会

区块链 供应链物流

一周信创舆情观察(11.9~11.15)

统小信uos

入坑 docsify,一款神奇的文档生成利器!

沉默王二

docsify

演讲经验交流会|ArchSummit 上海站

演讲经验交流会|ArchSummit 上海站

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