使用Nwjs开发桌面应用体验

zhupengfei 2018-04-22 原文

之前一直用.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的包使用。

  二、应用编写

  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就是输出文件。

  重点来了,下面的Files需要将locales和pnacl两个文件夹拖入,然后add选择nw.exe目录中所有不包含我们创建的helloworld应用的文件

  

  然后点击右下角的”Process”按钮,

  

 

 打包以后文件太大了,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说是全栈,其实最多还是能做桌面应用,真是要商用,还是差一些,最好慎重选择。

————————————————————

  遇到问题可以微信联系我哦

或者支付宝联系我

 

版权声明:本文为zhupengfei原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/zhupengfei/p/8906131.html

使用Nwjs开发桌面应用体验的更多相关文章

  1. NModBus的使用

      前言:最近在做一个项目,需要使用ModBus RTU与PLC进行通讯,现在将使用过程记录,以便备查。   […]...

  2. Express加mongodb(简要介绍)

    一、Express Express是基于nodejs,快速、开放、极简的web开发框架 1、安装Express […]...

  3. nodejs npm命令Error: EINVAL: invalid argument, mkdir

    npm config set prefix “D:\nodejs\node_global”npm config set cache "D:\nodejs\node_cache"npm 配置全局包和缓存包报错,原因在于设置包路径没有设置...

  4. 『发呆』.Net 2.0 ~ .Net 4.0 所实现了那些底层

    随着时间的推移,程序越写越大,代码越写越少。 今天突然发呆,就想比较全面的汇总一下 .Net 2.0 和 .N […]...

  5. 无法正常按照Nuget 包的问题

        引用Nuget 是遇到的问题,再次记录一下。 问题描述:Install-Package : 无法安装程 […]...

  6. C#系列之聊聊.Net Core的InMemoryCache

    作者:暴王 个人博客:http://www.boydwang.com/2017/12/net-core-in- […]...

  7. .NET Core学习笔记(3)——async/await中的Exception处理

    在写了很多年.NET程序之后,年长的猿类在面对异步编程时,仍不时会犯下致命错误,乃至被拖出去杀了祭天。本篇就a […]...

  8. .Net 之自定义Log

    话不多说,以下是简单的一个logHelper类和一个小demo 1.LogDto:主要封装一些记录日志用到的东 […]...

随机推荐

  1. Vue2.0项目使用bootstrap后提示Module parse failed: Unexpected character

    具体报错如下: 报错原因是: Vue2.0无法识别bootstrap.css中使用的字体,也就是上图中圈出来的 […]...

  2. 5 个免版权高清视频素材下载网站(一)

    视频表达相对文字和图片的更高难度就是,去哪里找那么多专业的高清、超清、4K、8K 素材,对于专业机构来说,我们 […]...

  3. 【死磕JVM】给同事讲了一遍GC后,他要去面试,年轻人,就是容易冲动!

    前言 在一个风和日丽的中午,和同事小勇一起走在公司楼下的小公园里面,看到很多的小姐姐,心想什么时候能够和这些小 […]...

  4. 如何将视频中的音频提取?

    相对比起文件、图片、音频格式,视频格式更难转换,如何在视频中提取音频呢?在网上看视频,喜欢那个背景音乐和台词的 […]...

  5. DoNews五周年三段精彩发言给互联网创业者洗脑(转载)

    今天参加DoNews五周年聚会,有三段发言我觉得颇为精彩,对互联网创业者非常有用,现摘录供广大互联网创业者参考 […]...

  6. 拿 C# 搞函数式编程 – 3

    LINQ + SelectMany = Monad! 前言 今天和某个人聊天聊到了 C# 的 LINQ,发现我 […]...

  7. 好消息,vue3.0 进入 beta 阶段!

    好消息,vue3.0 进入 beta 阶段! 昨天,4 月 16 日,vue 3 正式进入 beta 阶段。同 […]...

  8. ip地址分类和子网划分 – 辛笑笑

    ip地址分类和子网划分 ipv4的ip地址由被多个点分开的32 比特位组成,称作“点分”标记法。 ip地址的分 […]...

展开目录

目录导航