Node-Webkit能够做什么呢?

hangvo 发布于 2013/10/31 21:03
阅读 29K+
收藏 5

我是一个新手(真的很新。。。),所以如果下面问到大神们不喜欢的千万别喷我!!!

这两天我看到了haXe这个项目,然后我就来了兴趣,我看了一些资料,接着我又了解到node-webkit和CEF这些软件,但是我在了解的过程中产生了一些迷惑,我不知道这里有没有大神能够给出一个很好的解答:

(1)node-webkit、haXe、CEF是不是都可以用来制作桌面应用,有什么优势,现在的瓶颈是不是还是性能问题(我知道他们本质上都是个浏览器的内核)。他们可不可以调用操作系统本地的一些API?或者动态链接库?这一点也是我比较关心的,因为这样可以更好的扩展,灵活性高,应用可能也比较广。

(2)如果作为一种界面制作技术,node-webkit、haXe、CEF和Flex各自的优势和缺点?

(3)Node.js不是应该应用在服务器端的,现在出现在node-webkit中。那Node.js在node-webkit客户端应用中扮演了一个什么样的角色?

以下是问题补充:

@hangvo:这里弄错了,不是haXe,而是heX。抱歉,手快,点错,谢谢楼下的提醒 (2013/11/01 17:21)
加载中
0
mallon
hangvo
hangvo
怎么个方便,能不能解释一下呢???
0
yak
yak
node-webkit 怎么跟系统连接的传感器通信?
0
傅小黑
傅小黑

我觉得你要说的不是haXe,haXe是跨语言平台的语言,而是hex,有道的html5桌面化方案

1. node-webkit和hex都是把nodejs和chromium核心组合,而CEF是一个chromium内嵌组件用c或c++调用。nodejs可以操作系统api,比如文件,数据库等等。而动态链接库c和c++可以直接调用,nodejs只能支持c++ addon,由node-gyp编译,不是任意的

2. 作为界面技术而言的话,node-webkit,hex都是html5+css3,CEF也是但是可能还需要c或c++写界面包装一下(像豌豆荚),而flex是flash。

3. nodejs不是非得运行在服务端。比如你可以在cmd里命令使用一些模块,最常见的就是前端解决方案grunt,就是命令行应用。因而,显然nodejs可以为node-webkit提供逻辑支持,而html和css是界面支持。


hangvo
hangvo
node-webkit和heX只用html/css写界面就可以了,然后处理逻辑神马的可以扔给C/C++,最后再用nodejs链接起来,可以这样理解吗? 那个CEF可能还需要包装一下是什么意思,这个我有点不太懂。
0
wfifi
wfifi
我觉得 node-webkit是结合了node.js访问操作系统资源的能力和chrome UI和交互的能力,他们的强项分别是对方的弱点. 并且只要会javascript和HTML,css就可以做出桌面. 楼上的传感器可能要先开发nodejs模块,能访问到传感器才行.
0
figer1
figer1

node-webkit,CEF之类就是把服务器、浏览器全部打包封装一下搬到客户端电脑上。
优势是支持HTML5,现有的很多JS框架,相对于调用系统自带的IE内核(webbrowser控件)不会遇到太多浏览器兼容性问题(因为自带一个浏览器),缺点是体积太大,当然对于不在乎体积的软件这也许不是最大的问题, 但浏览器引擎都有个致命的弱点,就是难以完全避免内存泄漏,这个表现在桌面软件上就是你的界面不断切换打开较多网页时内存会只增不减,这对桌面软件是致命的问题, 

但对浏览器不是问题,例如chrome,为了完全解决这类问题,他每个网页都是创建一个新的进程,关闭网页就关闭进程可以完全释放资源。但这对桌面软件就非常麻烦了,进程间虽然可以通信,但交互与进程管理都非常麻烦,也许看网页,放个小电影,玩个HTML5小游戏你不会非常在乎资源占用,但对大多数桌面软件这就不行了。 

桌面软件的运行环境不是服务器,体积与资源占用、启动速度都需要考虑,nodejs他毕竟是为服务器设计的一个技术,即使是在服务端他仍然不能成为任何时候最好的选择,更不要说客户端了,他在服务端的优势有很多,但这些都不表示他在桌面开发上会表现很好。 

用javascript 就可以写全部的东西,其实也可以反过来说,全部的东西都要用JS写,js虽然很不错但所有事用js来做就是很痛苦的事,谁写谁知道。 

而且从使用这些技术的软件来看,感觉付出这么大的代价,加上这么大的体积,却没有带来太多惊炫的界面。在网上经常能看到种种源码:仿这个仿那个,而这些被争相模仿的界面很少有使用webkit之类技术做的,这个与我们去使用webkit的初衷就不太对称了,举一个例子 豆瓣FM 的桌面客户端,用到了QT,Webkit,Python都是时尚前沿的技术,看一下运行起来的界面 


那么再看一个第三方的豆瓣FM桌面客户端,下面这个界面用的是一个很轻量的界面引擎 HTMLayout

上面这个界面没有用到webkit,生成的软件包的体积只有1MB多,比之调用webkit之类体积要小太多,但界面并不比使用webkit逊色,写的源代码行数、开发时间也很少。

源码:http://www.oschina.net/code/snippet_987851_25376

当然这个东西也有缺陷,就是只能用于WIN桌面开发,不支持跨平台。有的人可能喜欢一次编译到处能运行,一种技术在所有平台上都可以使用,也就是找一把大锤子可以敲所有的钉子,而有的人,可能喜欢敲什么钉子就找更合适的锤子。至少对于桌面客户端软件来说、跨平台方案的应用并不乐观( 服务端反之 )。 HTMLayout其实是一把很小的锤子,不能跨平台,不够强大,但是拿起来就可以砸,很快就可以砸出东西( 熟悉HTML,CSS 的前提下 )。 

hangvo
hangvo
利用HTMLayout构建的界面会不会有什么限制?可以订制不规则窗口吗?
0
figer1
figer1

@hangvo

HTMLayout可以支持不规则窗口,而且非常方便,直接在背景里设置透明图像做背景就可以了,而且HTMLayout支持 APNG,即PNG动画。反而是传统浏览器要实现透明窗口非常麻烦。

这是一个HTMLayout实现桌面宠物的示例:http://www.oschina.net/code/snippet_987851_18905

这里有教程:HTMLayout 与分层窗口的结合

0
hacktdg
hacktdg
HTMLayout玩不过现在那些的,你说的官方豆瓣FM那是因为他们没有做绚丽的效果,目前html5+css3做3D都没问题而且直观
hangvo
hangvo
那你有那些可以推荐的?
0
惟吾德馨
惟吾德馨
node-webkit 怎么对异常统一处理???
0
意中砂

纯mark一个~~

返回顶部
顶部