使用 NW.js 将 Web 应用打包为桌面应用nw-builder

参考文章:https://www.techug.com/post/transfer-web-app.html

平时工作中经常需要开发各种管理后台,为了提升开发效率,一般会使用 Bootstrap 一类的 CSS 框架,使用 AngularJS 一类的单页应用框架,让 Web 开发能够更好的将精力集中在业务逻辑上。但逃不过另外一个麻烦,那便是跨浏览器的兼容问题。所以我一般的粗暴做法是,干脆就不支持 IE 浏览器,通过 userAgent 判断并提示用户切换到 Chrome 。其实,除了这个办法之外,还可以考虑将 Web 应用打包为桌面应用。开源社区提供了 NW.js 来轻松的将 Web 应用打包为桌面应用,这样只需要做到兼容 Chrome 就够了。

NW.js 简介

​ NW.js 由 node-webkit 改名而来。目的是想利用 JavaScript 来进行桌面应用开发。与操作系统交互的部分,利用 Node.js 来完成,而与用户交互的部分,则是使用的网页开发技术。国内比较有名的案例有钉钉的桌面版,有名的 Chrome 插件 Fawave 也还利用 NW.js 推出了桌面应用。

与 NW.js 类似的解决方案,还有 Github 为了开发 Atom 而推出的 Electron.js
。Slack 的桌面版就是基于它开发的。

环境搭建

需要安装以下几个:

Node.js Download
NW.js Download

创建配置文件

配置文件就是 Node.js 中常见的 package.json
,最简单的示例如下:

 {"name": "blog","main": "http://chensd.com/","version": "0.0.1","window": {"width": 1024,"height": 768,"frame": true,"toolbar": false,"icon": 'assets/icon.png'}
}

几个参数解释如下:

main:程序的入口,这里就是一个网址
window.height/ window.width:应用启动时的窗口大小
window.frame:是否显示桌面应用的标题栏
window.toolbar:是否显示浏览器中的前进后退和地址栏
window.icon:这个就是图标了
在程序目录中执行如下的命令,可以查看效果:请输入nw .

程序打包

打包可以使用一个 Node.js 模块 nw-builder
,先在程序目录中进行安装:

npm i --save-dev nw-builder
然后再创建一个 js 文件来存放打包配置:内容如下

var NwBuilder = require('nw-builder');var nw = new NwBuilder({files: './package.json', // 包含文件platforms: ['win64'], // 打包的平台version: '0.12.3' // 使用 NW.js 的版本
});nw.on('log', console.log); // 日志打印函数
// 开始构建
nw.build().then(function(){console.log('done!');
}).catch(function(err){console.log(err);
});

将文件存为 builder.js,然后使用 Node.js 来执行它:

运行:node builder.js
**第一种选择:**第一次执行时,会从 nwjs.io 上下载编译好的 chromium 文件,会花点时间(因为需要联网下载对应的nw的包)你可以慢慢等。

**第二种选择:**如果你不想等,如果 你想节省时间,可以事先下载好nw的包(可以去这里下载https://dl.nwjs.io/)

下载好后,放在当前目录的cache\0.37.0-sdk\win32目录下(.\cache\0.37.0-sdk\win32)注意,将下载包解压,然后将里面的文件复制到win32目录下,不要搞错哈。cache\0.37.0-sdk\win32这三个文件夹要新建,自己建

然后在上文中的builder.js中修改这部分内容:假如你指定的是0.37.0版本的,同时是sdk版本的nw包

此处看不懂可以评论哈,也可加我微信:yizheng369

var nw = new NwBuilder({"main": "index.html",files: ['index.html','./package.json'], // 包含文件platforms: ['win32'], // 打包的平台version: '0.37.0', // 使用 NW.js 的版本flavor: 'sdk'// 使用 NW.js 的sdk版本
});

编译完成后,会在目录中生成 build
文件夹,其中有个按 package.json
中 name
字段命名的目录,这里是 blog
,包含有使用平台命名的目录,这里是 win64
,这便是编译结果,文件列表如下:

λ ls -al build\eschool_desktop\win64
total 49332
drwxr-xr-x 1 Sid Administ 4096 Apr 6 06:54 ./
drwxr-xr-x 5 Sid Administ 0 Apr 6 06:54 …/
-rwxr-xr-x 1 Sid Administ 4173928 Apr 6 06:54 d3dcompiler_47.dll*
-rwxr-xr-x 1 Sid Administ 61057838 Apr 6 06:54 blog.exe*
-rwxr-xr-x 1 Sid Administ 987648 Apr 6 06:54 ffmpegsumo.dll*
-rw-r–r-- 1 Sid Administ 10457856 Apr 6 06:54 icudtl.dat
-rwxr-xr-x 1 Sid Administ 86016 Apr 6 06:54 libEGL.dll*
-rwxr-xr-x 1 Sid Administ 1890304 Apr 6 06:54 libGLESv2.dll*
drwxr-xr-x 1 Sid Administ 8192 Apr 6 06:54 locales/
-rw-r–r-- 1 Sid Administ 7482865 Apr 6 06:54 nw.pak
-rwxr-xr-x 1 Sid Administ 14879232 Apr 6 06:54 pdf.dll*
这其中,除了可执行文件和 nw.pak
和 icudt.dll
是必须的外,其它都是可以删除的,具体可以参见 How to package and distribute your apps
文章中的 ‘’’Window’’’ 部分的解释。

制作安装包
最后就是做个安装程序来搞定程序文件存储到 Program Files 目录图标放到开始菜单任务栏桌面之类的脏活累活了。自己写安装程序?那可不是 Web 程序员干的事情,当然还是找专业的人来帮忙。比如 Inno Setup
,当然还有一大票 类似的工具

打包为 Mac OS X / Linux 应用
只需要在 builder.js
中实例化 nw-builder 时多为 platform
数组添加几个值即可,支持的完成列表为:

[‘win32’, ‘win64’, ‘osx32’, ‘osx64’, ‘linux32’, ‘linux64’]
这样做没毛病吗?
怎么样,看起来不错吧?几分钟二十几行代码就制作了一个桌面应用,而且看起来还人模狗样的。不过你很快会发现,它没有缓存,localStorage 也不持久,每次打开就像第一次打开一样……下次我们来看看如何解决这些问题。

使用 NW.js 将 Web 应用打包为桌面应用nw-builder相关推荐

  1. NW.JS的安装与打包

    NW.JS的安装与打包 NW.JS的安装与打包,个人总结 NW.JS的安装 生成可执行的.exe NW.JS的打包程序 参考 NW.JS的安装与打包,个人总结 为了防止自己忘记,经过网上的一些资料参考 ...

  2. Ubuntu环境下使用NW.js对web应用封装

    前言 相对于偏向应用的windows系统,Linux系统更偏向于开发,因此对于依赖Windows应用的人来说,缺了很多常用软件会很不习惯,本文的目的便是通过两个Demo来引出后面的教程--通过NW.j ...

  3. 用node-webkit把web应用打包成桌面应用

    自己参加的web项目,最后发现被公司封装成了桌面应用,所以一直好奇是怎么加壳的,在网上找资料后终于发现了一些方法,我找到了三种方法可实现:JWebBrowser(基于IE内核,使用时会发现很多html ...

  4. 使用nw.js将vue项目打包为可在xp系统运行的桌面程序

    前情提要 在nw.js入门最如丝般润滑的教程一文中,作者介绍了简单的使用nw运行html文件为桌面程序以及将html文件打包为桌面可执行文件exe. 看vuecli创建的工程打包成exe文件可直接从[ ...

  5. nw.js项目用nsis打包成一个exe文件的坑

    nsis把nw.js整个项目编译成一个exe包,可以实现分发给客户时,可以给用户更好的体验,但是隐藏着一个坑.也可以说是nw.js本身存在的坑.由于nw.js是基于node.js和chromium的应 ...

  6. php 开发桌面应用,使用NW将开发的网站打包成桌面应用

    # 使用NW将我们开发的网站打包成桌面应用 >[info] NW.js 是Node.js 开发的桌面应用打包工具 > 你可以使用node语言开发桌面应用 我这里只是介绍如何将网站包一个本地 ...

  7. 【Electron】使用Electron将web项目打包成桌面应用程序

    目录 一.所需环境&打包前准备 1.安装node.js 2.安装electron 3.web项目 二.打包过程 1.打包配置 2. 安装打包器 3.执行打包命令: Electron是由GitH ...

  8. 如何把web项目打包成桌面应用程序

    1. 下载并安装Node.js,下载连接https://nodejs.org/en/ 2.检查是否安装成功 输入 "node -v" ,回车,显示Node版本:再输入 " ...

  9. mac nw.js 打包桌面应用程序

    参考https://segmentfault.com/a/1190000007564694和https://zhuanlan.zhihu.com/p/20070166 1.mac电脑下打包,需要先下载 ...

  10. 用node-webkit(NW.js)创建桌面程序

    以往写windows桌面程序需要用MFC.C#之类的技术,那么如果你只会web开发技术呢?或者说你有一个网站,但是你想把你的网站打包成一个桌面应用程序,该如何做呢? 答案就是用node-webkit这 ...

最新文章

  1. 20160115广州MVP线下聚会
  2. Deepmind最新研究:从图表示学习看算法推理
  3. php模块memcache和memcached区别分析
  4. (十一)Spring 基础注解(对象创建相关注解、注入相关注解)
  5. postgres 支持的线程数_线程池被打满了怎么处理呢,你是否真的了解线程池?
  6. 微信小程序中 tabbar的icon图标格式大小
  7. 前端组件化Polymer入门教程(7)——Local DOM
  8. Java数据结构与算法——图
  9. 如何防止editor中出现遮行的现象
  10. Mini MP3 Player模块无法正常播放
  11. 微信接口返回码对照表
  12. 3D 小游戏《欢乐贪吃龙》关键技术盘点 | Cocos 技术派第13期
  13. 基于python LDA模型的英文推特邮件主题分析 完整数据+代码 可直接运行
  14. 【蓝桥杯练习系统】【入门训练】【BEGIN-1】A+B问题 (Java)
  15. 数据采集简单示例:采集爱帮网电话号码
  16. SPM12入门案例2
  17. PHP面试题汇总参考
  18. C中最复杂难懂的一行代码
  19. 使用python处理wps表格_【使用Python操作XLS文件+wps中叫et+】 - #1
  20. Python解析wireshark所捕获的数据报

热门文章

  1. python提取首字符 判断火车票座位_python实战之通过爬虫实现火车票查询
  2. C语言表示欧拉常数算法,计算li(x)的两个级数的C语言实现
  3. 计算机数学英语基础,2020考研计算机数学复习四大基本方向
  4. 阿里双十一数据库技术
  5. 判断计算机电脑是否通电,电脑日常维护:查看硬盘通电时间,判断性能
  6. ES6之Symbol详解
  7. Python使用百度地图API实现地点信息转换及房价指数热力地图
  8. 18款表白源码,搭建网站必备,总有一款适合你
  9. 卡耐基梅隆大学 计算机信息管理,CMU-喜报!G同学成功收到2017-Fall 卡耐基梅隆大学 计算机信息技术硕士AD一枚...
  10. 【LeetCode】重复的子字符串