<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>有道技术沙龙博客 &#187; Node.JS</title>
	<atom:link href="https://techblog.youdao.com/?feed=rss2&#038;tag=node-js" rel="self" type="application/rss+xml" />
	<link>https://techblog.youdao.com</link>
	<description>分享有道人的技术思考</description>
	<lastBuildDate>Thu, 05 Mar 2026 10:02:57 +0000</lastBuildDate>
	<language>zh-CN</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=3.9.40</generator>
	<item>
		<title>heX：用HTML5和Node.JS开发桌面应用</title>
		<link>https://techblog.youdao.com/?p=685</link>
		<comments>https://techblog.youdao.com/?p=685#comments</comments>
		<pubDate>Mon, 02 Sep 2013 08:02:33 +0000</pubDate>
		<dc:creator><![CDATA[youdao]]></dc:creator>
				<category><![CDATA[技术分享]]></category>
		<category><![CDATA[heX]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[Node.JS]]></category>

		<guid isPermaLink="false">http://techblog.youdao.com/?p=685</guid>
		<description><![CDATA[丁宗秋 简介：heX，一个允许你采用前端技术（HTML，CSS，JavaScript）开发桌面应用软件的跨平台 [&#8230;]]]></description>
				<content:encoded><![CDATA[<p dir="ltr" style="text-align: right;"><strong>丁宗秋</strong></p>
<p dir="ltr">简介：<a href="http://126.am/ySiV80">heX</a>，一个允许你采用前端技术（HTML，CSS，JavaScript）开发桌面应用软件的跨平台解决方案。是你开发桌面应用的一种新的选择，意在解决传统桌面应用开发中繁琐的UI和交互开发工作，使其变的简单而高效。特别适合重UI，重交互的桌面应用软件。</p>
<p dir="ltr">欢迎关注<a href="http://hex.youdao.com">http://hex.youdao.com</a>  或微博 <a href="http://weibo.com/u/3695535380">@youdao_hex</a>。</p>
<p dir="ltr">一、项目背景</p>
<p dir="ltr">二、用heX开发桌面应用的优势</p>
<p dir="ltr">三、如何用heX开始一个桌面应用程序</p>
<p><span id="more-685"></span></p>
<h1 dir="ltr">一、项目背景</h1>
<p dir="ltr">近几年，移动应用和web2.0大行其道，相比之下，传统桌面应用程序开发显得相对冷清（包括该领域技术人才的后继力量），但在一些场景下，它依然有其不可替代的优势。探索中我们尝试了一种新的办法，并给它取名<a href="http://126.am/ySiV80">heX</a>，将HTML5和Node.JS的技术优势，应用于桌面应用程序开发，使得工作变得简单而高效。</p>
<p dir="ltr">2012年前后，一位研发工程师（外号6哥，精通web前端和桌面应用开发），先后参与了两个传统桌面应用程序UI改版工作（<a href="http://126.am/Scy941">有道云笔记</a>和<a href="http://126.am/M9fk71">有道词典</a>），任务是把软件界面中部分区域的浏览器渲染引擎，由IE内核替换为webkit，在这个过程中，有一种强烈的欲望：把整个软件界面的渲染都交由浏览器引擎来完成，这样一来，UI和交互部分都可以用前端技术来实现，那么，开发过程将变的简单许多，而客户端开发人员的主要精力也可放在业务逻辑上，何乐而不为！</p>
<p dir="ltr">为此，我们做了大量的调研，经反复尝试，最终确定通过整合Chromium和Node.JS，来解决桌面应用开发中遇到的大量繁琐的UI和交互开发工作。期间，发现一款类似的开源项目node-webkit，调研的结论是它暂时还无法用于正式的项目，所以，于2012年6月，我们正式成立一人开发小组（确实够小），经3个月的努力，终有小成，现已经应用于有道词典最新版。</p>
<p dir="ltr"><strong>简要介绍下选择Chromium和Node.JS的原因，同时，也在这里对他们表示感谢。</strong></p>
<p dir="ltr">选择Chromium，是因为它对HTML5的支持非常优秀，其内嵌的V8引擎，更是业内效率最好的JavaScript脚本引擎之一，且其项目开源，又有专门的社区和团队维护，作为UI渲染引擎，它是不二之选，体验上，你可以试用下google chrome浏览器，基本一致。</p>
<p dir="ltr">选择Node.JS，是因为开发桌面应用，本地资源操作是必备的能力，这方面JavaScript无能为力，而Node.JS则很好的解决了这个问题，它使得JavaScript操作本地资源变的毫无障碍。另一方面，Node.JS核心也是采用V8引擎，使得其与Chromium的整合变得更顺理成章。</p>
<h1 dir="ltr">二、用heX开发桌面应用的优势</h1>
<p dir="ltr">HTML5这几年很火，在成熟产品中的应用却极少，受各浏览器和平台的软/硬件性能问题的限制，整体感觉总是难以舒展（用的不踏实），具体原因网上可以找到一大堆，这里列举一个移动web app相关的，中英对照版，推荐抽空看一看:</p>
<p dir="ltr">英文版：<a href="http://sealedabstract.com/rants/why-mobile-web-apps-are-slow/">http://sealedabstract.com/rants/why-mobile-web-apps-are-slow/</a></p>
<p dir="ltr">中文版：<a href="http://www.cnblogs.com/codemood/p/3213459.html">http://www.cnblogs.com/codemood/p/3213459.html</a></p>
<p dir="ltr">尽管如此，HTML5的优势依然很明显，普及程度也正逐年提高，我们对它的未来信心十足。好东西，都值得我们主动去尝试，heX做的一个事情，就是提前把它应用于桌面应用开发，而不用顾忌它的兼容性和平台性能问题（<a href="http://www.d6pc.com/Html/?13005.html">PC性能过剩</a>）。</p>
<p dir="ltr"><strong>用HTML5开发桌面应用，到底有什么样的优势呢？这里列举几项：</strong></p>
<ol>
<li dir="ltr">
<p dir="ltr">精准还原UI设计。现在客户端软件UI设计用native方式来实现的成本越来越高，对HTML5来说却很容易，对后续的维护也非常的友好；</p>
</li>
<li dir="ltr">
<p dir="ltr">用户体验。如果你不清楚HTML5所能做到的体验效果，可以看看Chrome Experiments（<a href="http://www.chromeexperiments.com/">http://www.chromeexperiments.com/</a>）；</p>
</li>
<li dir="ltr">
<p dir="ltr">开发调试便利。heX保留了开发者工具（Chrome Developer Tools），让你在开发调试过程中，就如同web开发一样便利；</p>
</li>
<li dir="ltr">
<p dir="ltr">学习成本。相比传统桌面应用开发，web技术的入门成本明显偏低，你不用担心团队成员的离开，而苦于寻找后续开发力量。</p>
</li>
</ol>
<p dir="ltr">桌面应用开发，本地资源操作能力必不可少，Node.JS提供了丰富的自带API，让你免于逐个封装C++实现，就能在heX环境下的html页面中直接使用，如：本地文件系统操作，二进制数据处理，方便的创建子进程等等，详见<a href="http://nodejs.org/api/">Node.JS API DOCS</a>。</p>
<p dir="ltr"><strong>在桌面应用开发中用Node.JS的好处（一部分来自于heX的努力）：</strong></p>
<ol>
<li dir="ltr">
<p dir="ltr">直接用JavaScript对本地资源进行操作，相比C/C++，你无需编译，即写即用；</p>
</li>
<li dir="ltr">
<p dir="ltr">页面交互逻辑，窗体行为操作，与C++通信，用JavaScript都能搞定，开发一个桌面应用，你无需在语言之间来回切换；</p>
</li>
<li dir="ltr">
<p dir="ltr">Node.JS丰富的第三扩展，你都可以直接使用，无需从零开始；</p>
</li>
<li dir="ltr">
<p dir="ltr">继承于Node.JS优秀的扩展能力，以及它所遵循的<a href="http://www.commonjs.org/">commonjs</a>规范，代码管理也将变的方便和易于控制。</p>
</li>
</ol>
<p dir="ltr">从技术角度来讲，选择一个新生事物，我们持谨慎态度，需要经过充分的调研，考虑的因素众多，比如：性能，用户体验，开发效率，是否有团队在维护，文档是否完备，是否开源（如果是商业用处，还需考虑它的开源协议）等等。</p>
<p dir="ltr"><strong>而heX作为桌面应用开发的一种新的选择，它在这些方面的表现如何呢？前面已经讲到一些，这里再补充几点：</strong></p>
<ol>
<li dir="ltr">
<p dir="ltr">性能和体验，heX的基础由Chromium和Node.JS整合而成，整合后这两者的性能表现不受影响，体验方面，你可以参考google chrome浏览器，基本保持一致；</p>
</li>
<li dir="ltr">
<p dir="ltr">开发效率，如果你有过web前端开发经历，现在仅要求你支持最新版的chrome浏览器，你觉得如何？睡着了都能笑醒的事，heX做到了；</p>
</li>
<li dir="ltr">
<p dir="ltr">heX即将开源，请大家关注  <a href="http://hex.youdao.com">http://hex.youdao.com</a> 和 <a href="http://weibo.com/u/3695535380">@yoduao_hex</a></p>
</li>
</ol>
<p dir="ltr">一种东西，只能解决一方面的需求，heX亦非万能，亦有它适合的使用场景，最适合重UI、重交互的桌面应用，比如即将推出的新版有道词典（亿级桌面应用软件）beta版，就是采用heX作为其界面的解决方案。</p>
<h1 dir="ltr">三、如何用heX开始一个桌面应用程序</h1>
<p dir="ltr">采用heX开发桌面应用程序，有两种方式：</p>
<ol>
<li dir="ltr">
<p dir="ltr">直接基于heX做开发，针对web前端开发者，不要求桌面应用开发经验；</p>
</li>
<li dir="ltr">
<p dir="ltr">以模块形式引入到现在桌面工程中，针对传统桌面应用开发者，适合有一定历史的项目，或仅在界面中局部区域支持即可的项目。</p>
</li>
</ol>
<p dir="ltr">不管采用哪种方式，开发过程都很简单，这里就第一种方式，从零开始，一起来制作一个 hello word，如下：</p>
<p dir="ltr">1、下载heX二进制包（<a href="http://codown.youdao.com/hex/hex_1453_web_develop_windows.zip">http://codown.youdao.com/hex/hex_1453_web_develop_windows.zip</a>），解压到本地，打开后目录结构如下图所示，其中“hexclient.exe”是主程序文件，双击即可运行heX，“manifest.json”是heX的配置文件，可配置入口文件，窗口初始大小、位置等信息</p>
<p dir="ltr"><a href="https://techblog.youdao.com/wp-content/uploads/2013/09/1.png"><img class="aligncenter size-full wp-image-713" alt="1" src="https://techblog.youdao.com/wp-content/uploads/2013/09/1.png" width="604" height="457" /></a></p>
<p dir="ltr">2、创建一个用于写hello word程序的测试目录“test”，同时在其中新建html、js文件，如下图所示</p>
<p dir="ltr"><a href="https://techblog.youdao.com/wp-content/uploads/2013/09/2.png"><img class="aligncenter size-full wp-image-715" alt="2" src="https://techblog.youdao.com/wp-content/uploads/2013/09/2.png" width="628" height="168" /></a><a href="https://techblog.youdao.com/wp-content/uploads/2013/09/3.png"><img class="aligncenter size-full wp-image-717" alt="3" src="https://techblog.youdao.com/wp-content/uploads/2013/09/3.png" width="950" height="548" /></a></p>
<p dir="ltr">3、修改manifest.json文件，入口改为test/index.html，如下图所示</p>
<p dir="ltr"><a href="https://techblog.youdao.com/wp-content/uploads/2013/09/4.png"><img class="aligncenter size-full wp-image-719" alt="4" src="https://techblog.youdao.com/wp-content/uploads/2013/09/4.png" width="553" height="190" /></a></p>
<p dir="ltr">4、双击 hexclient.exe，运行，一秒后界面由“&#8230;&#8230;”变为“Hello Word！”，如下图所示，到此为止，一个简单的桌面应用就搞定了</p>
<p dir="ltr"><a href="https://techblog.youdao.com/wp-content/uploads/2013/09/5.png"><img class="aligncenter size-full wp-image-721" alt="5" src="https://techblog.youdao.com/wp-content/uploads/2013/09/5.png" width="500" height="245" /></a></p>
<p dir="ltr">正式产品案例：目前已经应用于新版有道词典（亿级桌面客户端软件）beta版，下图的整个界面和交互都是基于heX实现，欢迎下载体验：<a href="http://download.ydstatic.com/cidian/static/6.0/20130812/YoudaoDict.exe">http://download.ydstatic.com/cidian/static/6.0/20130812/YoudaoDict.exe</a></p>
<p dir="ltr"><a href="https://techblog.youdao.com/wp-content/uploads/2013/09/6.png"><img class="aligncenter size-full wp-image-723" alt="6" src="https://techblog.youdao.com/wp-content/uploads/2013/09/6.png" width="736" height="511" /></a></p>
<p dir="ltr">了解更多heX信息欢迎微博<a href="http://weibo.com/u/3695535380"> @youdao_hex</a> 或访问<a href="http://hex.youdao.com">http://hex.youdao.com</a></p>
<p dir="ltr">
]]></content:encoded>
			<wfw:commentRss>https://techblog.youdao.com/?feed=rss2&#038;p=685</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
