NW.js简介
官网:
GitHub:
nw.js 基于Node.js 和 Chromium ,可以看做是node-webkit
的缩写,是创建桌面应用的方案之一。相比于Electron,可以直接使用HTML构建应用。
下载及使用
到 nw.js 官网 https://nwjs.io/,下载最新的应用,有normal版和SDK版,随便下载一个即可。
解压后可以看到以下目录结构:
其中:
package.json
配置了应用的入口文件src
是我自己创建的,永远存放html源文件nw.exe
是可执行文件
修改 package.json
配置入口文件:
{
"name": "这是一个名称",
"main": "src/index.html",
"nodejs": true,
"window": {
"title": "这是一个标题",
"toolbar": true,
"width": 1920,
"height": 1080,
"resizable":true,
"show_in_taskbar":true,
"frame":true,
"kiosk":false
},
"webkit":{
"plugin":true
}
}
其中:
name
指定应用名称main
指定入口文件window
配置视窗参数
配置好后,创建一个入口文件 src/index.html
即可。随便输入点内容,双加 nw,exe
执行即可。
窗口控制
本来以为会跟浏览器一样,可以通过快捷键来控制窗口,试了才知道,根本不行。
查阅资料,发现nw.js
可以使用node模块,可以模拟浏览器的控制方式控制窗口。
按照以下快捷键操作进行控制:
F5
刷新F11
最大化F12
调出控制台ESC
退出窗口
我们结合浏览器以及node模块引入的写法,可以达到以上控制目的:
let gui = require('nw.gui')
let win = gui.Window.get()
let devToolFlag = false
window.addEventListener('keyup', (e) => {
// alert(e.keyCode)
// 按下F11全屏
if (e.keyCode === 122) {
win.toggleFullscreen()
}
// 按下F12打开控制台
if (e.keyCode === 123) {
devToolFlag = !devToolFlag
if (devToolFlag) {
win.showDevTools()
} else {
win.closeDevTools()
}
}
// 按下F5刷新
if (e.keyCode === 116) {
win.reload()
}
// 按下ESC关闭窗口
if (e.keyCode === 27) {
win.close()
}
})
通过监听键盘抬起事件,判断其 keyCode
,执行不同窗口操作即可。
:::warning 注意:打开控制台需要SDK版本才支持。 :::
调用Node.js方法
在NW.js
中,可以直接调用Node.js的方法。
比如:
const os = require('os')
console.log(os)
alert(os.arch())
alert(os.version())
生成安装包
通常情况下,直接将整个项目打包为压缩文件,解压后运行 nw.exe
即可。
如果想打包为安装程序,并生成快捷方式,可以借助WinRAR的自解压程序。
具体操作如下:
- 改选“创建自解压格式压缩文件”
- 切到“高级”选项卡,点击“自解压选项”
- 选择“添加快捷方式”
- 输入源文件名、快捷方式名等,可以使用相对路径
打包好后,生成自解压安装文件:
安装完成后,会在桌面生成一个快捷方式:
如果要指定快捷方式的图标,需要在“快捷方式图标”栏填写图标路径,相对于压缩包项目本身的路径,图标需要为.ico
扩展名。比如:
解压时注意,需要在当前解压目录建一个文件夹,否则解压后文件会散落到当前目录: