Node-Webkit作者王文睿:桌面应用的全新开发方式

摘要:最近两年,Node.js技术越来越火,基于它所开发的应用也纷纷出现在大家面前,其中Node-Webkit就是这样的一个开源框架,它允许开发者使用Web技术开发桌面应用。

Node-Webkit是NodeJS与WebKit技术的融合,提供一个跨Windows、Linux平台的客户端应用开发的底层框架,利用流行的Web技术(Node.JS,JavaScript,HTML5)来编写应用程序的平台。应用程序开发人员可以轻松的利用Web技术来实现各种应用程序。Node-Webkit性能和特色已经让它成为当今世界领先的Web技术应用程序平台。

本期,我们对Node-Webkit的项目发起人Rogerwang,真名王文睿进行了采访,请他来谈谈Node-Webkit的开发始末,以及实现原理。

Node-Webkit的项目发起人 王文睿

CSDN:您先做个自我介绍吧!

王文睿:目前我任职于Intel公司开源技术中心(OTC),从事Web和浏览器技术开发工作。现在主要工作是开发和维护Node-Webkit项目。此前从事过MeeGo、Tizen和JNI xml性能库的开发和数据中心解决方案服务。我于2005年加入Intel公司,此前于毕业于中科大少年班,在计算机系获得博士学位,研究方向为高性能计算。

CSDN:Node-Webkit项目创建的初衷是什么?

王文睿:2011年的时候,我和同事在讨论如何为Tizen WebRuntime增加扩展API的时候有了这个想法,就是用Node平台来扩展WebRuntime,达到开发本地应用的目的。那时候公司内部有个鼓励创新计划的活动,所以起初我可以用10%的工作时间投入到这个项目中。

CSDN:怎么想到把Node.js和Webkit技术结合在一起的?在这个项目中,Node.js和Webkit各自扮演着怎样的角色?这样结合有哪些优势?

王文睿:那时候已经了解到Node.js平台在Web开发者中很流行,有很多库,可以写本地应用。所以就有了用它扩展WebRuntime的想法。相比自己定义许多API, 这样做开发者几乎不需要学习新的接口,而且方便自己用JS或者C++扩展。

WebKit(现在是Blink)负责HTML5 UI 相关的部分,而Node.js负责本地的API接口,比如文件系统,网络,设备等。

CSDN:Node-Webkit允许采用Web技术开发本地应用的原理是什么?具体是如何实现的?

王文睿:项目的核心思想就是在DOM中跑的代码能够直接调用Node.js中运行的代码,所以核心的部分是把二者跑在同一个线程中。需要把Chromium进程的事件循环和Node.js的事件循环合并在一起,并且把二者的V8 JS引擎环境(Context)合并起来。

CSDN:将HTML/CSS/JS编译为本地代码,其内部过程是什么样的?

王文睿:其实是一个打包的功能,将项目文件打包和Node-Webkit可执行文件放置在一起,就可以直接运行了。Node-Webkit启动的时候会自动加载页面文件。

CSDN:和其他类似方案(比如TideSDK等)相比,Node-Webkit有哪些优势?

王文睿:Node-Webkit的最大特点是集成了Node.js,可以直接调用该平台上的各种库。因为二者之间的函数调用和对象的互相访问都是直接的,所以性能较好。在Node-Webkit出现以后,曾经也出现过其他试图集成Node.js的项目,但是是通过IPC机制,把Node.js跑在独立的进程中,这样需要把函数调用和参数以及结果序列化。其他一些项目则不支持Node.js。

另外Node-Webkit项目处于活跃状态,能够经常更新并和上游项目(Chromium、Node.js)同步。

CSDN:Node-Webkit支持哪些平台?对于在各平台上发布,Node-Webkit提供了哪些本地接口?

王文睿:目前支持Windows,Mac OSX和Linux三种主流桌面平台。本地接口主要是通过Node.js平台上的各种库实现的。在这个平台上有上万个软件包(npmjs.org),开发者可以选择自己需要的。Node-Webkit也提供了一个用于操作窗口、菜单、剪贴板等UI元素的跨平台库。

CSDN:Node-Webkit应用可以直接操作本地OS,在应用的性能和安全方面,Node-Webkit是如何考虑和实现的?

王文睿:Node-Webkit支持的是本地应用,这类应用相比Web应用的安全模型是十分不同的。和最终用户的Outlook、Skype等桌面软件一样,前者通过信任的渠道分发、用户安装即意味着信任该软件、软件可以在系统里面做几乎任何事情;而Web应用的特点是通过互联网直接下载并执行、默认情况下用户不信任该应用、应用进行特定操作前(例如访问摄像头)需要用户授权。

所以尽管同样是基于Web技术,Node-Webkit针对的是完全不同的安全模型。对于开发者的代码,Node-Webkit会放宽很多来自Web应用安全模型的限制,比如跨域访问等。对于当Node-Webkit程序加载不信任的内容时,开发者可以指定使用和Web应用一样的安全措施。

CSDN:能否介绍一下Node-Webkit的主要开发人员?目前在Github中,Node-Webkit的fork数超过800,来自社区的贡献有多少?

王文睿:主要的开发人员目前只有我一个人。曾经有另一个主要的开发者赵成,他在我们这里实习的半年多时间里开发了跨平台的UI库功能。

我们一直鼓励社区参与这个项目的开发。到目前为止来自于社区的贡献不多,原因大概是因为社区中的用户主要使用JavaScript语言,而我们的代码主要是C++编写的。另外我们一直在招聘实习生参与这个项目,欢迎大家投递简历。

CSDN:目前基于Node-Webkit开发的成功案例/应用有哪些?

王文睿:有一个创新的IDE项目叫LightTable ,它曾经是 KickStarter上的10大科技项目之一,并向7000多人募集了35万美元,目前已经获得风投支持;还有不少游戏基于Node-Webkit,例如GameDevTycoon;LeapMotion应用中心和支持LeapMotion控制器的一些应用;另外还有Intel的HTML5 开发环境XDK New等。

CSDN:Node-Webkit未来的发展规划?是否会考虑支持移动平台?

王文睿:未来需要定期和上游项目保持同步,应用户的需要提供更多的特性,比如提供浏览器内部接口、更多跨平台的UI功能。由于目前用户的需求和反馈很多,所以还无法提供移动平台的支持。

CSDN:您如何看待HTML5及HTML5开发本地应用的前景?

王文睿:在互联网不断发展的背景下,HTML5是为数不多的业界各方持续集中投入开发的技术。使用HTML5开发界面处于领先位置,所以它一定会广泛应用到桌面领域。

CSDN:前一段时间,Groupon和PayPal将其技术栈转移到了Node.js,您如何看待近两年Node.js技术的发展和其前景?

王文睿:最近两年Node.js 越来越热门,两年多以前Node-Webkit 创立的时候,npmjs.org上有4000多个软件包,现在已经增长到20000多个。因为它给JavaScript或者Web开发者一个浏览器环境之外的新天地。他们可以写包括服务器端在内的本地应用,不再受限于浏览器提供的API限制。这种编程方式一定会流行开来。

CSDN:英特尔开放源码技术中心是一个什么样的组织?据我所知,Node-Webkit最初是您的业余项目,现在的状态是什么?

王文睿:英特尔开放源码技术中心(OTC)是Intel内部的一个全球性的组织。位于美国、中国、英国、芬兰、巴西、法国、罗马尼亚等地800多人。参与开发包括Linux 内核、虚拟化、Android、Tizen、Chromium等各种开源项目。

目前因为Node-Webkit有不少用户,所以我可以用全部时间开发这个项目。即使如此有很多问题不能一一回复,借此机会希望大家谅解。

时间: 2024-08-30 10:59:41

Node-Webkit作者王文睿:桌面应用的全新开发方式的相关文章

王文峰《人脸识别原理与实战以MATLAB为工具》PDF及代码+《人脸识别原理及算法(沈理)》PDF+学习参考

人脸识别是当今世界科技领域攻关的高精尖技术.<人脸识别原理及算法:动态人脸识别系统研究>系统介绍了人脸识别研究领域的研究状况以及作者在人脸识别领域的研究工作和研究成果,全书共分为3个部分. <人脸识别原理与实战以MATLAB为工具>作为该技术的进阶指南,在内容上尽可能涵盖人脸识别的各技术模块,立足于作者 在中国科学院.985工程大学国家重点实验室从事视频识别与智能监控项目开发的研究积累及实战体验,分享了作者对人脸识 别算法设计的一些最直观的感触和认识. 参考学习: <人脸识别

透明位图的显示 作者:王骏

透明位图的显示作者:王骏 http://www.vckbase.com/document/viewdoc/?id=532 下载本文示例代码 包含透明色的位图的绘制方法有多种,最简单的方法是调用现成的函数:TransparentBlt,也可以通过自己的代码实现类似TransparentBlt的功能,实现过程也有两种形式,一种是事先做一张掩码位图,另一种是动态生成掩码位图.本文将介绍动态生成掩码位图绘制具有透明区域位图的方法. 一.TransparentBlt 函数的使用  TransparentB

王文彬:阿里云的下一步

阿里云的下一步 在阿里巴巴上市之前的静默期,阿里云却有些不太“安静”. 三次降价,牵手浪潮,开放Open Search服务,发布大数据工具……最近半年,阿里云业务布局的节奏突然加快,8月19日更是发布了云生态共建战略“云合计划”,该计划拟招募1万家云服务商,为企业.政府等用户提供一站式云服务,正式吹响了行业由IT时代向DT时代迁移的冲锋号角. 从2009年阿里云团队写下第一行代码开始,5年时间阿里云成长为国内公有云市场的绝对领导者.阿里巴巴2013年的财报显示,来自云计算和互联网基础设施的收入为

《中国移动王文生:5G+区块链为万物互联带来新机遇》

"我认为区块链和5G是相互赋能的关系,我们可以将信息网络形象地看成交通网络.如果说联网设备是汽车的话,那么5G技术就是高速公路,而区块链就是交通规则,确保高速公路上的数据传输更安全,更准确."中国移动通信集团浙江有限公司杭州分公司总经理王文生在接受环球网记者专访时说. 2019年10月15日,由国家信息中心主办的区块链服务网络(BSN)发布会暨技术发展高峰论坛在北京举行,会后,王文生在接受环球网记者就区块链技术赋能5G时表示,5G让联网设备能够更快速地传输数据,而区块链则是让这个传输过

老王学Linux-云桌面可行性分析

云计算如火如荼的火热发展的当下,传统桌面系统方面也免不了要被云化,为什么会被云化,他的需求在哪里.桌面可是互联网基础设施中最重要的一环之一:它直接与用户接触,这就意味着它的需求量很大,市场份额很重. 一般新技术都比旧技术强,都会慢慢取代旧技术,但是云桌面却被各界人士抛弃,它的原因是什么? 1 与传统桌面的运行逻辑对比 相较于云桌面,传统桌面的运行逻辑简单的多,只是在计算机硬件上跑一个已经编译定制好的系统,通常就是一台电脑.而云桌面就复杂多了,云桌面的运行的逻辑图如下. 首先,在客户端方面也是一台

sublime 设置新建文件自动添加author(作者)等文件头信息

很多时候, sublime 自带自动添加文件头信息, 但是并不是我们想要比如下面这样的:新建一个python文件 自动添加的author 信息== 上面并不是我想要的, 我想要下面这样的效果:== 这就需要我们设置插件来自定义化, 步骤1) 安装 file Header 插件 (一般默认已经安装)2) 设置变量 比如author 值, email 的值3) 修改语言 模板具体如下:第一步: 查看是否已安装 file Hdader 插件== 能找到 File Header 就说明已经安装, 如果没

node webkit (nw.js) 无法调试的结局方案之一

项目,当时主要内容是由别人做的!过后回到家中,自己研究了下这方面.结果发现我的 nw 客户端不可以调试!在网上各种找办法,没找到,深感绝望,突然看到 (https://github.com/nwjs/nw.js/blob/nw17/docs/For%20Users/Getting%20Started.md) 上面说,建议你选择 sdk 版本! nw.js sdk 版本什么东西?抱着试一试的心态下了一个! 熟悉的界面又回来了!

node webkit(nw.js) 设置自动更新

原理:把更新的文件放在服务器上,设置一个客户端版本号,通过接口获取服务器上的版本,如果高于本地的版本就下载服务器上的代码,低于或等于就不更新 代码如下: <script> var http = require('http'); var fs = require('fs'); var request = require('request'); var unzip = require('unzip2'); var Driver = function () { this.timer = ''; th

Node webkit启动最大化窗口

<!DOCTYPE html> <html> <head>     </head> <body>     <p style="text-align:center;margin-top:10%;color:green;font-weight:bold;font-size:12px">正在加载中...</p>     <script language="javascript" ty