Nwjs开发桌面应用
使用Nwjs开发桌面应用体验
https://www.cnblogs.com/zhupengfei/p/8906131.html
之前一直用.net开发桌面应用,最近由于公司需要转为nodejs,但也是一直用nodejs开发后台应用,网站,接口等。近期,需要开发一个客户端,想着既然nodejs号称全栈,就试一下开发桌面应用到底行不行。
是骡子是马总要拉出来溜溜才知道,是吧。
查了一下,目前用Nodejs开发桌面应用,主要有两种方案
1.Electron
Electron是一款利用Web技术开发跨平台桌面应用的框架。项目地址是:https://github.com/atom/electron
2.NW.js
NW.js是Intel的工程师写的一个基于node.js和chromium的应用程序运行环境。项目地址是:https://github.com/rogerwang/node-webkit
一、NW.js的下载
官网地址是:http://nwjs.io/
进去之后,点击下载SDK的版本,并解压至本地目录即可。
这里遇到一个郁闷的事,从官网上下载的0.30版本的zip包,怎么都打不开,提示压缩包有错误。
使用7zip也不行
还是从官网下载的,真是服了。下载了10几次都不行。。
只能从其他网站下载了一个0.23的包使用。
0.23版本的sdk下载
https://download.csdn.net/download/zhupengfei/10366176
0.30版本的运行时下载
https://download.csdn.net/download/zhupengfei/10366181
二、应用编写
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>
按新建helloworld.js
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上同样也可以运行。
三、应用打包
一般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啊。
看到上图结果,就说明执行成功了。
找到打包后的文件,然后执行。
四、加密
加密必须使用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说是全栈,其实最多还是能做桌面应用,真是要商用,还是差一些,最好慎重选择。
Nwjs开发桌面应用的更多相关文章
- 使用nwjs开发桌面应用之Hello,World!
今天发现原来JavaScript也可以用来开发桌面应用程序,顿时有一种很牛逼的感觉,于是马上就开始了Hello,World!,感受一下JavaScript的强大. 可以用来开发桌面应用的js框架有三种 ...
- 使用Nwjs开发桌面应用体验
之前一直用.net开发桌面应用,最近由于公司需要转为nodejs,但也是一直用nodejs开发后台应用,网站,接口等.近期,需要开发一个客户端,想着既然nodejs号称全栈,就试一下开发桌面应用到底行 ...
- arcpy+PyQt+py2exe快速开发桌面端ArcGIS应用程序
前段时间有一个项目,大体是要做一个GIS数据处理工具. 一般的方法是基于ArcObjects来进行开发,因为我对ArcObjects不太熟悉,所以就思考有没有其他简单快速的方法来做. 在查看ArcGI ...
- electron之Windows下使用 html js css 开发桌面应用程序
1.atom/electron github: https://github.com/atom/electron 中文文档: https://github.com/atom/electron/tree ...
- NativeScript 也能开发桌面应用 (nativescript-dotnet-runtime)
自从看了NativeScript就甚是喜欢,心想要是也能开发桌面应用该多好.求人不如求己,开源组件很强大,差不多组装一下就行了,说干就干. Javascript 引擎用 Jint , 纯C#实现,集成 ...
- heX——基于 HTML5 和 Node.JS 开发桌面应用
heX 是网易有道团队的一个开源项目,允许你采用前端技术(HTML,CSS,JavaScript)开发桌面应用软件的跨平台解决方案.heX 是你开发桌面应用的一种新的选择,意在解决传统桌面应用开发中繁 ...
- heX:用HTML5和Node.JS开发桌面应用
国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...
- node-webkit:开发桌面+WEB混合型应用的神器
顾名思义, node -webkit就是 node js+webkit. 这样做的好处显而易见,核心奥义在于,用 node js来进行本地化调用,用webkit来解析和执行HTML+JS. 快速上手 ...
- HTML5开发桌面应用:选择node-webkit还是有道heX
近几年,移动应用和web2.0大行其道,相比之下.传统桌面应用程序开发显得相对冷清(包含该领域技术人才的后继力量),但在一些场景下,它依旧有其不可替代的优势. 将HTML5和Node.JS的技术优势. ...
随机推荐
- MT【197】存在$a,b$对于任意的$x$
已知$f(x)=ax^2+bx-\dfrac{1}{4}$,若存在$a,b\in R$,使得对于任意的$x\in[0,7],|f(x)|\le2$恒成立,求$|a|$的最大值____ 提示:$|ax^ ...
- 【转】ubuntu 12.04下如何开启 NFS 服务 & 设置
在嵌入式Linux开发中,利用NFS服务从开发板访问Linux主机是个高效&方便的调试方法,在程序调试过程中可以避免多次下载程序到开发板.但这需要在Linux主机上首先开通NFS服务. 以ub ...
- 基于CMS的组件复用实践
目前前端项目大多基于Vue.React.Angular等框架来实现,这一类框架都有一个明显的特点:基于模块化以及组件化思维.所以,开发者在使用上述框架时,实际上是在写一个一个的组件,并且组件与组件之间 ...
- python爬虫requests过程中添加headers
浏览器中打开页面,以edge为例,点击“查看源”或F12 第一步:点击上图中“网络”标签,然后刷新或载入页面 第二步:在右侧“标头”下方的“请求标头”中的所有信息都是headers内容,添加到requ ...
- JDK环境变量的配置1
JDK环境变量的配置 ... 1.安装完JDK后配置环境变量 计算机→属性→高级系统设置→高级→环境变量 2.系统变量→新建 JAVA_HOME 变量 .变量值填写jdk的安装目录(我的安装目录 ...
- vue-router基本概念及使用
index.html: <!DOCTYPE html> <html> <head> <title></title> <meta cha ...
- Dubbo学习笔记10:Dubbo服务消费方启动流程源码分析
同理我们看下服务消费端启动流程时序图: 在<Dubbo整体架构分析>一文中,我们提到服务消费方需要使用ReferenceConfig API来消费服务,具体是调用代码(1)get()方法来 ...
- python 基础 元组()
# 元组 应用场景 # 尽管 Python的列表中可以存储不同类型的数据 # 但是在开发中,更多的应用场景是 # 1.列表存储相同类型的数据 # 2.通过迭代遍历,在循环体内部,针对列表中的每一项元素 ...
- 使用Python编写简单的端口扫描器的实例分享【转】
转自 使用Python编写简单的端口扫描器的实例分享_python_脚本之家 http://www.jb51.net/article/76630.htm -*- coding:utf8 -*- #!/ ...
- Ansible Tower系列 三(使用tower执行一个任务)【转】
创建playbook Tower playbook 项目默认存在 /var/lib/awx/projects/ su - awx cd projects/ mkdir ansible-for-devo ...