zoukankan      html  css  js  c++  java
  • 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说是全栈,其实最多还是能做桌面应用,真是要商用,还是差一些,最好慎重选择。

  • 相关阅读:
    软链接的应用(在同一目录下方便查看日志)
    decimal模块
    python的request包
    jmeter的环境配置
    java交互方式中的同步与异步
    mysql数据库的快捷键
    [LeetCode]Number of Islands
    [LeetCode]Binary Tree Right Side View
    [LeetCode]House Robber
    [微软实习生2014]K-th string
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/8966990.html
Copyright © 2011-2022 走看看