基础概述

NW.js 是基于 ChromiumNode.js 运行的, 以前也叫nodeWebkit。这就给了你使用HTML和JavaScript来制作桌面应用的可能。在应用里你可以直接调用Node.js的各种api以及现有的第三方包。因为Chromium和 Node.js 的跨平台,那么你的应用也是可以跨平台的。

Getting Started

1、安装对应的模块包:

cnpm install nw nw-builder -S
  • nw :基于Chromium和io.js的应用程序运行时。用于构建将在OSX,Windows和Linux上运行的桌面应用程序。https://www.npmjs.com/package/nw
  • nw-builder : 以编程方式或通过CLI为Mac,Win和Linux 构建NW.js应用程序。https://www.npmjs.com/package/nw-builder

2、初始化项目目录结构

- package.json
- src-- package.json-- views-- main.html-- assets
- dist

3、初始化配置package.jsonscripts命令

{"name": "nw_js","version": "1.0.0","description": "* initialize npm project contain package.json","main": "index.js","scripts": {"dev": "nw src/","build": "nwbuild --platforms win32,win64,osx64,linux32,linux64 --buildDir dist/ src/"},"keywords": [],"author": "","license": "ISC","devDependencies": {"nw": "^0.44.1-sdk","nw-builder": "^3.5.7"}
}

4、初始化窗口属性配置src/package.json

{"name": "src","version": "1.0.0","description": "","main": "views/main.html","scripts": {"test": "echo \"Error: no test specified\" && exit 1"},"window": {"title": "damiao-classroom demo","icon": "assets/icons8-apple-logo-64.png","toolbar": true,"frame": true,"resizable": false,"width": 800,"height": 600,"position": "mouse","min_width": 400,"min_height": 200,"max_width": 800,"max_height": 600,"transparent": false,"show_in_taskbar":true},"webkit": {"plugin": true},"keywords": [],"author": "","license": "ISC"
}

6、启动项目

> npm run dev

代码加密保护

有些情况下,代码还是不能直接暴露给用户的;我们可以使用V8 Snapshot 的方式来达到代码加密保护的目的;

具体的方式是使用 /nwjs.exe 来运行 nwjc source.js core.bin命令,然后再index.html里使用require(‘nw.gui’).Window.get().evalNWBin(null, ‘./app/v0.0.1/core.bin’);(注意这里的路径,是相对于nw.exe的位置)将代码引入到项目中;
可以查看 使用V8 shapshot 比不使用的变化 ;

注意 使用V8 Snapshot 还是有一些限制的 ,比如官方提到的这些;
还有就是加密的代码里不要使用 let、const这些关键字,我曾经就因为这个始终编译不通过;

自动更新

更新分为两种情况:

  • 仅仅项目的代码需要更新

  • nw.js本身也需要更新;

通常情况下,不会遇到需要更新nw.js 本身的情况,因为当选定一个版本的NW.js后,就认定它了,除非遇到了什么无法解决的BUG;

那我们先实现仅更新项目的代码这种情况吧,这个比较简单;前面介绍项目接口就提到 /app/v0.0.1/ 就是放置V0.0.1的所有代码的位置;
那么如果要更新到V0.0.2,那我们新建一个文件夹 /app/V0.0.2,然后把V0.0.2的代码都放到这个文件下,然后把/package.json替换成新版本的package.json;这样重启客户端之后,然会读取v0.0.2的代码了。具体的更新代码就不写了,可以把新版本的代码打包成zip包,然后客户端下载好,解压就行。

下面说说NW.js本身也需要更新的情况吧,这个目前我还没遇到,所以只能提供一个思路,由于nw.exe在运行时,我们是不能替换它的,那么肯定需要用别的可执行文件来替换它了,我猜钉钉的实现方式就是这种思路:

项目打包发布

一般都是使用NSIS来打包,但是别忘了在打包前,把需要保护的代码加密,然后删除源文件。干这些机械、无聊的事当然不能让自己来做,必须使用Gulp.js来啊。还能把顺便把代码压缩、文件合并什么的也干了。

执行npm run build命令

> npm run build
> nwbuild --platforms win32,win64,osx64,linux32,linux64 --buildDir dist/ src/

一些小坑

里面带的调试工具是不能打断点的,webstorm可以配置,然后就可以断点调试了;
使用NSIS打包别忘了加上文件夹权限的控制,不然会遇到文件无法写入的情况;

NW.JS 客户端开发入坑指南相关推荐

  1. uniapp调用c语言方法,uni-app 入坑指南-web开发

    编辑推荐: 本文重点介绍了 uni-app 入坑指南,方便大家更好的了解 uni-app 本篇只讲述 uni-app,不与其他类似框架进行对比 本文来自于博客园,由火龙果软件Alice编辑推荐. 什么 ...

  2. 开发工具篇第九讲:菜鸟入坑指南

    摘要:本文是开发工具篇第九讲:菜鸟入坑指南.针对新人上手慢的问题,写了这篇入坑指南,方便自己回顾,总结.本文分为四个部分,分别为jenkins使用技巧:常用软件操作命令:开发手册:调试手册.主要材料来 ...

  3. python web-python web入坑指南

    原标题:python web入坑指南 Invest regularly in your knowledge portfolio. Make learning a habit. 自学python web ...

  4. api 微信内置浏览器js_多端开发框架uni-app入坑指南,一套代码适用微信、头条等小程序...

    前言 hello 小伙伴们,现在我已经正式入坑 uni-app 了.uni-app 已经发布好几个月了,期间也是踩坑无数,但是官方秉承着不抛弃不放弃的精神,积极解决开发者的各种简单的.复杂的问题,在此 ...

  5. 微信小程序继续入坑指南

    微信小程序继续入坑指南 wxml 类似于html 感觉和ejs灰常的相似 数据绑定 js Page({data: {message: "hello world"} }) wxml ...

  6. 发布开源框架到CocoaPods入坑指南

    个人原文博客地址: 发布开源框架到CocoaPods入坑指南 在开发过程中一定会用到一些第三方框架, 只要安装了CocoaPods, 然后通过pod install命令, 就可以集成框架到项目中了 可 ...

  7. Rust 入坑指南:鳞次栉比 | CSDN 博文精选

    作者 | Jackyzhe 责编 | 屠敏 出品 | CSDN(ID:CSDNnews) 很久没有挖Rust的坑啦,今天来挖一些排列整齐的坑.没错,就是要介绍一些集合类型的数据类型."鳞次栉 ...

  8. 丅rust是什么意思_Rust入坑指南:亡羊补牢

    如果你已经开始学习Rust,相信你已经体会过Rust编译器的强大.它可以帮助你避免程序中的大部分错误,但是编译器也不是万能的,如果程序写的不恰当,还是会发生错误,让程序崩溃.所以今天我们就来聊一聊Ru ...

  9. 信息安全之路入坑指南

    作者:腾讯安全平台部研发安全团队 riusksk 疫情下的高考已结束,又快到填志愿的时候了,又有不少知青要加入信息安全这个圈子.为了响应组织号召,撰写此文作为信安行业的入坑指南,希望能对刚入圈的同学有 ...

  10. Camunda BPM工作流引擎入坑指南(一)

    Camunda BPM工作流引擎入坑指南 欢迎使用Camunda BPM工作流 入坑说明书 入坑准备工作 BPMN2.0基础 Camunda实战 Camunda BPM Activiti对比 功能快捷 ...

最新文章

  1. 一个接口同时支持 form 表单、form-data、json 的优雅写法
  2. linux环境下安装tomcat6
  3. 一气发了3个patch
  4. oracle中treat函数,Oracle 函数概览
  5. jsp mysql 注入攻击实例
  6. UA MATH636 信息论9 Reed-Solomon Code
  7. 互掐!美团“抛弃”支付宝,背后的真相到底是啥?
  8. python学习六:数据结构
  9. docker运行随机分配端口
  10. POJ2228-Naptime【环形结构上的dp】
  11. JavaFX游戏(四连环)
  12. 客制化键盘编程_客制化键盘劝退指南
  13. WebCombo 客户端绑定数据
  14. python3字典写入excel_Python玩转Excel(第2期)~这里只有干货
  15. html图片怎么设置行高,html行高怎么设置
  16. Redis 学习---(12)Redis HyperLogLog
  17. 行编辑器c语言,行编辑器——C语言.doc
  18. 80%的前端程序员都遇到的问题,你中招了吗?
  19. session和cookie的区别和联系详解,Cookie Session相关看这篇就够了。
  20. 青花瓷运用-下载历史版本App

热门文章

  1. 2项密评新标准6月1日实施(附图解幻灯片下载)
  2. 大牛C++编程开发学习建议50条http://blog.csdn.net/gggg_ggg/article/details/44015409
  3. CMAQ-5.2安装及测试数据运行
  4. python you-get下载视频下载到哪里_python you-get下载哔哩哔哩视频
  5. 高等数学基础:求导总结
  6. C语言程序设计第四次作业-选择结构(2)
  7. 探寻Linux 中国之路
  8. linux cpu使用率 理解,深入理解Linux的CPU使用率
  9. TBODY标签有什么作用
  10. 山重水复疑无路,分库分表来敲门