是骡子是马总要拉出来溜溜才知道,是吧。java
查了一下,目前用Nodejs开发桌面应用,主要有两种方案node
1.Electronpython
Electron是一款利用Web技术开发跨平台桌面应用的框架。项目地址是:https://github.com/atom/electronlinux
2.NW.jsgit
NW.js是Intel的工程师写的一个基于node.js和chromium的应用程序运行环境。项目地址是:https://github.com/rogerwang/node-webkitgithub
1、NW.js的下载
官网地址是:http://nwjs.io/web
进去以后,点击下载SDK的版本,并解压至本地目录便可。shell
这里遇到一个郁闷的事,从官网上下载的0.30版本的zip包,怎么都打不开,提示压缩包有错误。json
使用7zip也不行
仍是从官网下载的,真是服了。下载了10几回都不行。。
只能从其余网站下载了一个0.23的包使用。
0.23版本的sdk下载
https://download.csdn.net/download/zhupengfei/10366176
0.30版本的运行时下载
https://download.csdn.net/download/zhupengfei/10366181
2、应用编写
1.在nw.exe目录中建立一个helloworld的文件夹。
新建index.html
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Hello zhupengfei!</title> <script src="helloworld.js"></script> </head> <body> </body> </html>
document.write('Hello, World!');
新建package.json
{ //应用的入口页面(也能够设置成js文件) "main": "index.html", //应用的名称 "name": "HelloWorld" }
2. 运行helloworld。
a) 在nw.exe所在目录按下shift+鼠标右键,选择"在此处打开命令窗口"。而后输入nw helloworld便可看到运行效果。注意建议使用cmd,不要使用powershell。我使用powershell必须使用./nw 才能够。
b) 能够直接将helloworld目录拖拽到nw.exe上一样也能够运行。
3、应用打包
通常windows的桌面应用都是exe可执行文件,是不依赖于其余文件和环境的。而咱们建立的helloworld应用是依赖于nw.exe和相关文件的,那么如何将应用打包成一个可执行文件呢?
通过google,果真是有解决方案的,那就是Enigma Virtual Box
1. 下载Enigma Virtual Box
地址是:http://enigmaprotector.com/en/downloads.html
选择最后一个下载就能够了,而后安装。
2. 将应用打包成helloworld.nw文件。
进入到helloworld目录中,全选三个文件打包成zip,而后更名成helloworld.nw。
(有一个坑,这里从网上看了说用WINRAR压缩成ZIP不行,必须用7-zip,因此这里直接经过。
3. 合并helloworld.nw和nw.exe
将helloworld.nw文件移动到和nw.exe同级目录下,而后执行命令,注意nw.exe必须在前面,不要弄反了,hello.exe运行会出错
copy /b nw.exe+helloworld.nw hello.exe
发现多了一个hello.exe文件,双击发现是能够运行的。不过这还不是最终的结果,由于将hello.exe移动到其余文件夹以后,就不能正常执行了。
4. 使用Enigma Virtual Box打包成exe,安装后能够语言中选择中文显示。
Input File Name选择刚才生成的hello,Output File Name就是输出文件。
除了刚才合并的hello.exe文件,其余全部文件都须要添加进来,有一个快速的方法就是直接将所需的文件和文件夹,直接拖进来。
肯定
而后点击右下角的"执行封包"按钮,
打包之后文件太大了,144M啊。我晕,这才只是个demo啊。
看到上图结果,就说明执行成功了。
找到打包后的文件,而后执行。
4、加密
加密必须使用SDK包,开始下载的是运行时包,不知道,后来下载了SDK包,才发现里面有nwjc.
增长加密字符串,又方便确认是否加密成功。
执行如下命令,将JS文件加密为bin文件
$ cd helloworld
$ ../nwjc.exe helloworld.js helloworld.bin
多了两个文件。
内容确实输出了。
而后按照上面相同的步骤,压缩zip修改成nw,而后合并,处理等等。
我的总结:
我的感受二者都差很少吧,昨天用Electron作了一个demo,效果出来了。还不错。今天用Nwjs试一下。
为何还要用Nwjs呢,缘由是Electron目前没法支持代码保护,能够asar压缩,可是能够解压。作桌面应用多数仍是商业项目,因此代码保护我认为是必须的。
昨天晚上看Electron的github里吵了半天,最后的结论是eclectron没有计划在项目中增长代码保护功能,缘由是他们认为多数人用不到。
因此我以为作桌面应用仍是选用传统的.net java C++等吧,像nodejs python说是全栈,其实最多仍是能作桌面应用,真是要商用,仍是差一些,最好慎重选择。
2018-4-24看到朋友的热情回复,这里补充一下
使用nodejs开发客户端,仍是用c#,解决方案自己没有对与错,要看具体的需求,适合需求的方案都是对的,好的,同时这个对和好也不是长久的,随着技术的进度,未来可能就不合适了。
说两个使用场景
一、若是咱们要开发一个云网盘的客户端。那用Nodejs开发应该是合适的,一次开发,能够适合于不一样的客户端,windows,linux都适用。
或者采用微信的客户端的方式,用cef浏览器客户端开发,这样,网页版,PC版都统一了。
二、若是咱们要开发一个商业的收银系统,支持读会员卡,打印小票,可能还要读身份证,指纹仪设备等,c#有多年的经验,一些设备厂商也都提供的有相应语言的demo。若是用nodejs开发,可能要费点功夫了。
并且作商业软件,系统得稳定吧,对我而言,我确定会选择c#开发。
或许几年后,nodejs桌面开发慢慢成熟,对接外设已经有大量的产品,那时候说不定我会选择nodejs呢。
------------------------------------------------------------
遇到问题能够微信联系我哦
或者支付宝联系我