zoukankan      html  css  js  c++  java
  • 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有不少用户,所以我可以用全部时间开发这个项目。即使如此有很多问题不能一一回复,借此机会希望大家谅解。

  • 相关阅读:
    Codeforces 1045C Hyperspace Highways (看题解) 圆方树
    Codeforces 316E3 线段树 + 斐波那切数列 (看题解)
    Codeforces 803G Periodic RMQ Problem 线段树
    Codeforces 420D Cup Trick 平衡树
    Codeforces 295E Yaroslav and Points 线段树
    Codeforces 196E Opening Portals MST (看题解)
    Codeforces 653F Paper task SA
    Codeforces 542A Place Your Ad Here
    python基础 异常与返回
    mongodb 删除
  • 原文地址:https://www.cnblogs.com/smght/p/4410167.html
Copyright © 2011-2022 走看看