NW.js桌面应用开发(一)

NWjs中文网地址:https://nwjs.org.cn/

NWjs英文网地址:https://nwjs.io/

一些需要了解的历史与特性,其实就是 NW.js 和 Electron的争议,看看就好,不必纠结,想用那个用那个喽,或者要你用那个就得用那个喽,然后开干

1、下载SDK版工具

淘宝NPM镜像下载,速度飞快,我选择最新的 https://npm.taobao.org/mirrors/nwjs/v0.41.2/nwjs-sdk-v0.41.2-win-x64.zip 版本,对应 Chromium 77 + Node 12.9.1

然后就可以按照官网快速入门例子,就像构建一个Node项目一样从package.json起手,首先构建一个静态页面的应用。

2、编辑源文件

准备好package.json和index.html两个文件

{
    "name": "helloworld",
    "main": "index.html"
}

注意:Windows系统的默认编码是GBK,而我们经常写代码用的是UTF-8(VS除外),这里index,html的编码格式就得改一改了,否则就像CMD黑窗口一样,UTF-8中文显示乱码

<!DOCTYPE html>
<html>
  <head>
    <title>Hello World-这是标题!</title>
  </head>
  <body>
    <h1>Hello World-这是正文!</h1>
  </body>
</html>

3、运行应用

在这之前,我先配置一下环境变量,当然你也可以直接把应用拖到解压后的 nwjs-sdk-v0.41.2-win-x64 目录下去运行,不过作为一个balabalabala...,我还是要配个SDK的环境变量,就可以在别的目录下写应用代码了

注意:准备好静态文件,配好环境变量后要开始运行应用了,这里用的是你的应用的整个目录,而不是package.json或index.html某个文件,效果如下

4、打包应用

参考 https://www.jianshu.com/p/3337701f9b80,或者手动打包 https://www.cnblogs.com/sener/p/8366164.html

这个比较坑,方式有好几种,这里选择推荐的 nwjs-builder-phoenix 工具打包,试了几次才成功

首先需要把package.json文件补全

{
  "name": "helloworld",
  "version": "0.1.0",
  "description": "this is first nw app",
  "main": "index.html",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "dist": "build --tasks win-x64 --mirror https://npm.taobao.org/mirrors/nwjs/ .",
    "start": "run --x64 --mirror https://npm.taobao.org/mirrors/nwjs/ ."
  },
  "author": "jxh",
  "license": "ISC",
  "build": {
    "nwVersion": "0.41.2"
  },
  "dependencies": {},
  "devDependencies": {
    "nwjs-builder-phoenix": "^1.15.0"
  },
  "window": {
    "title": "hello nw",
    "width": 840,
    "height": 600,
    "toolbar": true,
    "resizable": false,
    "icon": "./hello.png"
  }
}

前面的名称,版本,描述不用多说,mian是应用入口,参照官网说明

scripts是打包脚本,参照 https://github.com/evshiron/nwjs-builder-phoenix 说明,里面有个配置例子 https://github.com/evshiron/nwjs-builder-phoenix/blob/master/assets/project/package.json

--tasks win-x64 是需要打包生成的的平台文件,可以一次性打包其他平台的,用 , 隔开,比如win-x86

--mirror https://npm.taobao.org/mirrors/nwjs/ . 是下载nwjs的镜像地址

window是应用窗口的一些配置

打包的时候直接运行 npm run dist 开始打包,就会生成所有文件了,运行结果如下,其实就是自动下载NWjs,然后把源文件copy到dist下

PS E:\Code\NW_Learn\01_HelloWorld> npm run dist
> [email protected]0.1.0 dist E:\Code\NW_Learn\01_HelloWorld
> build --tasks win-x64 --mirror https://npm.taobao.org/mirrors/nwjs/ .

Starting building tasks... { tasks: [ [ ‘win‘, ‘x64‘ ] ], concurrent: false }
Building for win, x64 starts...
Fetching NW.js binary... { platform: ‘win‘,
  arch: ‘x64‘,
  version: ‘0.41.2‘,
  flavor: ‘normal‘ }

[==================================================] 6002.55KB/s 0.0s

Building targets...
Building directory target starts...
Building directory target ends within 11.59s.
Building for win, x64 ends within 28.89s.
PS E:\Code\NW_Learn\01_HelloWorld> 

然后在当前目录下生成 dist/helloworld-0.1.0-win-x64目录

点击helloworld.exe就可以执行了,查看其详细信息,就是配置的那些

5、遇见的坑

5.1 不要使用 cnpm 安装nwjs-builder-phoenix,我的好像莫名的多下了一些依赖文件,然后打包的时候发生了莫名的化学反应,导致node_modules变成了1.3G,还自动把 node_modules 复制到 dist 下去了,然后打包出来的是个巨大的废包,还是手动  npm config set registry https://registry.npm.taobao.org 设一下镜像吧

5.2 千万不要把这句话抄过来,否则生成好几个平台的目录可慢了

"dist": "build --tasks win-x86,win-x64,linux-x86,linux-x64,mac-x64 --mirror https://dl.nwjs.io/ .",

5.3 这个生成压缩文件的也还是不要选了

"targets": [
      "zip",
      "nsis7z"
 ]

5.4 可能是由于 5.1 的原因,我打包一直生成一对废品,后来删了 node_modules重新用npm安装,再打包就好了

6、一些说明

就一个helloworld,打包后的文件夹有211M,压缩后63M,是因为这东西就是个Chrome浏览器

不推荐将整个应用打包为一个exe文件,虽然看起来逼格高一点,但是不好更新

原文地址:https://www.cnblogs.com/jixiaohua/p/11668305.html

时间: 2024-10-16 03:59:10

NW.js桌面应用开发(一)的相关文章

nw.js桌面软件开发系列 第0.1节 HTML5和桌面软件开发的碰撞

第0.1节 HTML5和桌面软件开发的碰撞 当我们谈论桌面软件开发技术的时候,你会想到什么?如果不对技术本身进行更为深入的探讨,在我的世界里,有这么多技术概念可以被罗列出来(请原谅我本质上是一个Windows程序员的事实). 操作系统 API.操作系统发展到今日,几乎桌面应用的所有功能,都是基于系统API构建的.调用API和语言及技术无关,哪怕是使用汇编.例如(代码来源于网络,本地重新编译): ;我的第一个win32汇编程序 ;一个经典的hello world !程序 ;>>>>&

用NW.js开发下一代桌面应用程序

前言 就在最近,GitHub发布了其代码编辑器Atom的1.0正式版.使用过它的童鞋一定会知道它利用网页技术开发.只不过它的框架是Atom Shell,非常类似NW.js.这时你可能问,放着好端端的native级界面框架不用,为什么要使用网页技术编写界面呢?下面我们就来探讨一下这个问题. 网页技术的优缺点 优点 HTML技术发展到今天的HTML5版本可谓已经十分强大,同时有CSS3的加持,网页也可以华丽夺目.Canvas标签.Audio标签以及Video标签的引入使得网页真正支持了多媒体,使用已

nw.js开发第一个程序(html开发桌面程序exe)

一.环境配置 windows系统 cnpm install node 下载nw.js https://github.com/nwjs/nw.js 找到download下载合适的版本 二.开发 项目目录如下: node_modules存放用到的node模块,package.json是入口文件 package.json内容为 {"name": "nw-app","version": "1.0.0","descriptio

展示触摸屏网页打包成桌面应用(nw.js)

一.编写触摸屏网页注意点 1.控制缩放行为.内容宽度为屏幕宽度,初始缩放比例为1:1,并禁止缩放(如若可放大缩小,影响操作体验) <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"> 2.<a>标签点击存在暗色透明背景问题,使用css属性 -webkit-tap-highlight-colo

Web桌面应用框架3:Web桌面应用开发的N种Style

研究Web桌面应用开发有一段时间了,总结了Web桌面应用开发的一些主流方式. 一.前端Style 这种方式的就是直接实现一个Web程序,再封装一个浏览器展示,相当粗暴和有效.著名的框架就是Electron和NW.js了. 代表应用程序是atom. 一般是基于node.js.也有其它语言的. 各种前端框架的拥趸是这种Style的狂热粉丝.这里就不放Demo了.贴段代码就可以感受到它的霸气侧漏. app.on('ready', function() { // 创建浏览器窗口. mainWindow

node 桌面应用开发

1.node桌面应用开发的框架 :electron 和 nw.js     https://www.jianshu.com/p/c6bdb087e60d 2.使用electron构建跨平台Node.js桌面应用  : https://www.zhangxinxu.com/wordpress/2017/05/electron-node-js-desktop-application-experience/  或  https://www.jianshu.com/p/2d7bc19cae64 原文地址

NW.js 入坑指南

NW.js是什么? 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-

基于CefGlue的桌面应用开发

原文地址:http://johnnyfee.github.io/csharp/2013/12/21/cef-glue/ 前言 如果你想使用WEB技术来开发桌面客户端,并且是想使用的语言也是C#时,那请耐心往下看.使用WEB技术开发桌面客户端的核心其实就是使用一个能够独立运行WEB前端的组件,如WinForm中的WebBrowser,Android平台的WebView,以及Qt提供的WebView,等等.对于桌面客户端开发而言,使用WebBrowser空间依赖于客户端安装的IE浏览器版本,而且IE

nw.js如何处理拖放操作

其实拖放(drag-drop)操作是Html5的功能,不是nw.js的内置API,那么我们采用Html5应用一般的处理方法就可以了. 首先我们看一下一个正常的页面,直接拖放一个文件过来的效果. 页面代码: <html> <head> <title>拖放测试</title> </head> <bodystyle="background-color:rgba(0,0,0,0);"> <pid="outp