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說是全棧,其實最多還是能做桌面應用,真是要商用,還是差一些,最好慎重選擇。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM