项目目录如下:
将html项目压缩成zip,并改名为nw,输入以下命令
copy /b nw.exe+app.nw firstApp.exe
四、打发包发布
打开 Enigma Virtual Box 程序(enigmavb.exe),界面应该是这样的:
然后在 Enter Input File Name 处选择上一步生成的 test.exe 文件,Enter Output Name 可以默认;
之后再点击下面的 Add 按钮,将 nwjs 文件夹(名称不一定是 nwjs ,就是最开始第一步 NW.js 环境的那个文件夹)下除 nw.exe 和 test.nw 以及 test.exe 之外的所有文件加载上,然后点击 Process ,等待执行成功即可,这时候会在相应的路径下生成一个新的 .exe 文件(我们暂且叫做 newtest.exe),此时的 newtest.exe 文件即可在任意的 Windows 环境下运行了,你可以拷贝给你的小伙伴去 Show 一下。
下面是nw使用过程中的一些坑
1.如果只希望当前应用获取焦点才执行快捷键,看看这个库用js设置快捷键
// 加载本地ui库 var gui = require('nw.gui'); var option = { key: "Ctrl+R", active: function () { alert("全局快捷键" + this.key + "按下"); }, failed: function (msg) { //创建快捷键失败 alert(msg); } }; // 创建快捷键 var shortcut = new gui.Shortcut(option); // 注册全局快捷键 gui.App.registerGlobalHotKey(shortcut); // 解除注册,在应用结束的时候执行 gui.App.unregisterGlobalHotKey(shortcut);
2.nw.js不能对页面多次刷新,各种不正常,这是由于刷新页面后重新加载js文件对变量重新赋值引起的bug。 解决方案
nw.js 读取和保存文件
<html> <head> <meta charset="utf-8"/> <title>nw.js实现文件读写</title> </head> <body> <input id="readFile" type="file" >读取文件</input> <!-- 默认文件名为filename.html --> <input id="writeFile" nwsaveas="filename.html" type="file">保存文件</input> <p></p> <script> //nw.js提供的读写文件模块 var fs = require("fs"); //读文件 var chooser = document.querySelector('#readFile'); chooser.addEventListener("change", function (evt) { //用户选择的文件 var filePath = this.value.toString(); document.querySelector("p").innerHTML = "读取文件从" + filePath; fs.readFile(filePath, function (err, data) { if (err) { layer.msg("读取文件失败! :" + err.message); return; } else { console.log(data); alert(data); } }) }); //写文件 chooser = document.querySelector('#writeFile'); chooser.addEventListener("change", function (evt) { //用户选择的文件 var filePath = this.value.toString(); document.querySelector("p").innerHTML = "写入文件到:" + filePath; //把hello写入文件 fs.writeFile(filePath, "Hello!\n", function (err) { if (err) { alert("保存失败!"); } }); }); </script> </body> </html>
内容版权声明:除非注明,否则皆为本站原创文章。