简介

NW.js 是基于 Chromium 和 Node.js 运行的, 以前也叫nodeWebkit。这就给了你使用HTML和JavaScript来制作桌面应用的可能。在应用里你可以直接调用Node.js的各种api以及现有的第三方包。因为Chromium和 Node.js 的跨平台,那么你的应用也是可以跨平台的。现在已经有很多知名的应用是基于NW.js实现,这是官方统计的一些列表: https://github.com/nwjs/nw.js/wiki/List-of-apps-and-companies-using-nw.js, 文档中心(https://nwjs.org.cn/);

安装NN

  1. 您可以从官网获取最新版本的文件 下载;

  2. 也可以使用npm安装

npm install nw -g

执行nw . 命令验证是否安装成功

nw .
// 或
nw 文件夹名称

创建应用

创建package.json

{
  "name": "demo-app", // 名称
  "main": "./index.html", // 指定项目主页面
  "build": "1445048139741", // 这是为了给更新时判断版本用的
  "version": "0.0.1",// 当前版本
  "homepage": "https://madaozhijian.com",
  "description": "Nw.js Demo", // 描述
  "window": {
    "title": "Nw.js Demo", // 如果 index.html没有title,则会显示这里的值
    "icon": "assest/img/logo.png", // icon
    "position": "center", // 窗口在桌面打开的位置
    "width": 1280, // 窗口宽度
    "height": 680, // 窗口高度
    "toolbar": true, // 是否隐藏窗口的工具条(浏览器工具栏)
    "frame": true, // 是否显示最外层的框架,设为false之后 窗口的最小化、最大化、关闭 就没有了
    "resizable": true, // 可以变换大小
    "min_width": 1028 // 最小宽度
  },
  "node-main": "./node-main.js",// node-main.js 位置,执行node
}

页面文件index.html

<html>
    <head>
        <title>Hello World!</title>
    </head>
    <body>
        <h1>Hello World!</h1>
    </body>
</html>

可以在html中直接执行node模块。

打包应用

  1. 将内核copy出来
cp -R /usr/local/lib/node_modules/nw/nwjs/nwjs.app ./hello-nw.app

其实就是下载的那个可执行文件。

  1. 将package,html 等资源所在的文件夹 压缩成zip,修改后缀名为nw

  2. 将内核和打包的资源合并

zip -r ../hello-nw.app/Contents/Resources/app.nw *
  1. 下载icns更新icon
    Contents/Resources 中替换nw.icon
  1. 将package,html 等资源所在的文件夹 压缩成zip,修改后缀名为app.nw

  2. 将nw.exe 和 app.nw合并成一个文件夹

copy /b nw.exe+app.nw app.exe
  1. 下载Enigma Virtual Box 将文件打包

  2. 利用zip更换icon

程序-> 添加到压缩文件 -> zip, 存储(方式),创建自解压 -> 高级 -> 自解压选项 ->
设置 -> 提取后运行(添加文件名.exe) -> 模式(解压到临时文件夹, 全部隐藏) ->
更新(覆盖所有文件) -> 文本和图标(从文件加载自解压文件图标) -> 确定。完成

使用方法

入口文件中可通过require引入node模块执行

{
  "name": "demo-app", // 名称
  "main": "./index.html"
}

如 index.html

<script>
var fs = require('fs'); // 使用fs文件处理模块
</script>

也支持安装的第三方模块

npm install antd --save

var antd = require('antd');

操作NW

可通过nw.gui模块操作应用

var gui = require('nw.gui');