轻量级桌面应用开发的捷径——nw.js

每个程序员都希望用自己喜欢的语言,自己喜欢的平台、工具,写自己喜欢的程序。于是我们会看到有人在Win下用Visual Studio愉快地coding,也会看到有人在OS X下用Xcode来开发,或者是用Sublime Text不受平台限制地玩。

当然了,愿望往往是美好的,然而事与愿违的情况时有发生。如果你基本都是用OS X,却有人让你写一个带有简单界面的小程序,保证在他的Win系统上一定可以运行,那么你是不是有点抓狂。

艰难的选择

选择哪条路?

当然,我可以在Visual Studio(已经有Mac OS X版)下用MFC或者其他框架来写,但是总感觉有点重量级,并且不能移植到其他平台(万一哪天让我写个OS X下的界面呢,想想都不寒而栗啊!)

所以我想找的就是一个可以跨平台的、轻量级的图形界面开发的库,于是想到了喜欢的Python,然后发现它下面的GUI开发框架还真不少:wxPython, tkInter, PyGtk, PyQt。

  • wxPython: 首先官网相当简洁(丑陋),然后快速浏览了一下文档,发现有这块:Cross-Platform Development Tips,告诉你跨平台要注意哪些东东,看来不是我心中想的那样只需要写一份代码,在不同平台编译一下就可以,于是放弃。
  • TkInter: 也在其他地方看到有人推荐这个,但是感觉文档特别乱,网上一些教程也相当简陋,里面界面丑的掉渣,也放弃了。

后面两个我甚至都没耐心继续看下去了,因为我不经意看到了nw.js,他就像一座灯塔,冥冥之中照亮了前进的方向啊。

nwjs——前进的方向!

Github上nw.js有两万多Star和接近3000的Fork,说明它已经相当成熟,不会是某个人随兴放的一个并不成熟的技术。并且在Github项目的最后面,显示Intel有赞助这个项目,看起来很牛的样子。而且关于nw.js的资料也特别齐全,首先来看看它的特点:

  • 支持用HTML5, CSS3, JS和WebGL来写应用程序,包括桌面端和移动端;
  • 完全支持Node.js APIs和所有的第三方模块;
  • 性能也不会很差,对于轻量级的应用足够了;
  • 对应用进行打包和发布十分简单,也就是说写一份代码很容易移植到不同的平台(包括主流的Linux, Mac OS X 和 Windows);

然后作者怕你认为它很难打交道,进而“知难而退”,就在项目主页里用许多slides来介绍它。

下面这张slide解决了“nw.js能做什么?”的问题,简单来说nw.js就是使HTML, CSS, JavaScript写的原本在浏览器上运行的程序,也可以在桌面端运行。

下面这张slide解决了“怎么用nw.js完成任务?”的问题,

最后,开发者怕你怀疑nw.js的强大,又提供了几个Demo许多成功的案例来打消我们的顾虑。

nwjs——拿下助攻!

决定用nw.js之后,就开始补充相应的知识啦。首先自己没有怎么去学过JavaScript, HTML, CSS这类web方面的语言,不过想来也不会比C++难。学习的成本也应该比学习MFC, wxPython低很多,并且这些语言太基础、使用场景太多了,所以早晚都得了解一下,干脆借这个机会一边学一边做具体的东西。于是买了《JavaScript DOM编程艺术(第2版)》这本书拿来入门。

讲了这么多,还没说我具体要做什么呢,其实要做的事情特别简单,就是统计一本书的页码中一共有多少个0,1,2,3,4,5,6,7,8,9。关于这个问题,详细看前面的那篇博客:讲得明白,但写的明白吗?

我要实现的目标很简单,在输入正确的数字时,给出统计结果;输入错误的数字时,则给出错误提示,重置输入框和统计结果。如下:

实现过程相当简单,特别是对于那些做过web开发的,详细过程就不在这里给出了,只提供一个简单的程序逻辑图吧。

源码十分简单,可以在这里找到,结构如下:

 tree
.
├── index.html
├── main.js
├── package.json
└── style.css

0 directories, 4 files

打包到各个平台也有详细的文档。以Win为例,只需要三步即可:

  1. 将所有工程文件,放在一个文件夹下,确保package.json在根目录,然后压缩为.zip格式,并将压缩文件的后缀由.zip改为.nw
  2. 在nw.js的环境目录下执行copy /b nw.exe+you_nw_name.nw you_app_name.exe (这一步之后,就可以在生成的目录中直接运行you_app_name.exe,它依赖同目录下的一些其他库);
  3. Enigma Virtual Boxyou_app_name.exe和依赖的库打包到单个exe文件中,这样我们的应用在没有任何编程环境的win机器上都可以运行。

nwjs——你值得拥有!

不得不提nw.js开发出的应用已经涵盖了许多领域:

  1. WhatsApp 经典的聊天应用,还有Messenger
  2. Powder Player 种子下载,以及视频播放器;
  3. Boson Editor 代码编辑器,甚至还有一款Markdown编辑器叫Story-writer
  4. Leanote Desktop App 类似Evernote的笔记类应用程序;
  5. Mongo Management Studio 数据库管理应用。

来欣赏一下一些应用的截图吧,不得不说nw.js开发出的应用一点不比原生的丑陋啊。

Mongo Management Studio

Soundnode App

看来nw.js赢得了很多青睐,那么还有什么能阻止我们拥抱nw.js呢?。


ps:

  • 如果有的链接打不开,先检查打开的姿势对不对。
  • 更多文章,请移步我的博客
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,736评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,167评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,442评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,902评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,302评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,573评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,847评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,562评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,260评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,531评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,021评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,367评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,016评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,068评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,827评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,610评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,514评论 2 269

推荐阅读更多精彩内容