简介

NW.js (原名 node-webkit)是一个结合了 Chromium 和 node.js 的应用运行时,通过它可以用 HTML 和 JavaScript 编写原生应用程序。它还允许开发者从 DOM 调用 Node.js 的模块 ,实现了一个用所有 Web 技术来写原生应用程序的新的开发模式,而且,开发者可以很容易的将一个web应用打包成原生应用(Further, you can easily package a web application to a native application.)。

(1)以网络最流行的技术编写原生应用程序的新方法

(2)基于HTML5, CSS3, JS and WebGL而编写

(3)完全支持nodejs所有api及第三方模块

(4)可以使用DOM直接调用nodejs模块

(5)容易打包和分发

(6)支持运行环境包括32位和64位的Window、Linux和Mac OS

使用方法如下:

一、下载nw

1.下载 NW.js(官网:http://nwjs.io/

这里面normal这个算是运行时吧,sdk那个是一些工具箱,一般建议开发者选择SDK开发套件去开发自己的应用,这样的话就可以对开发过程中产生的错误进行调试debug

2.下载完成后解压文件到你的开发目录下,然后进入解压文件的开发目录,一般目录结构如下(myapp为自建开发项目,不属于固有部分):

3.  myapp(名字可以随便起)为项目目录,其内部结构类似以下(除简单配置文件外结构就跟开发一个网页时类似,有js\html\css等)

4. Package.json可以理解为应用的配置文件,为必须;index.html作为应用的入口文件,内容和一般网页类似,名字可以按自己喜好起,但是一定要和配置中的“main”参数设置一致;如果要引用node模块,可以在目录结构中增加一个node_modules的目录,以存放APP所需的node模块。

  • title : 字符串,设置默认 title。
  • width/height : 主窗口的大小。
  • toolbar : bool 值。是否显示导航栏。
  • icon : 窗口的 icon。
  • position :字符串。窗口打开时的位置,可以设置为“null”、“center”或者“mouse”。
  • min_width/min_height : 窗口的最小值。
  • max_width/max_height : 窗口显示的最大值。
  • resizable : bool 值。是否允许调整窗口大小。
  • always-on-top : bool 值。窗口置顶。
  • fullscreen : bool 值。是否全屏显示。
  • show_in_taskbar : 是否在任务栏显示图标。
  • frame : bool 值。如果设置为 false,程序将无边框显示。
  • "chromium-args" :"-allow-file-access-from-files" 相当于给谷歌浏览器添加启动参数一样,这行代码允许angularjs直接访问本地json文件。

5. 运行应用:将应用程序目录拖放到nw.exe即可运行;或者在该下载包的根目录下,按着 shift+右键 选择 “在此处打开命令窗口” 打开cmd命令,输入nw myapp (myapp为自建的项目名称),就可以查看页面。

二、打包exe

1.将项目相关添加到压缩文件夹

将压缩包更名为 app.nw,将app.nw放在nw.exe同级目录下,跟nw一起打包成一个可执行文件,执行以下命令,然后就出现了这个app.exe可执行文件:

copy /b nw.exe+app.nw app.exe

2.可以新建一个文件夹,把必须的文件放里面,如下为app.exe执行必须的文件:

双击app.exe打开即可

修改图标

1.在myapp文件夹下(即web项目根目录下)的assets文件夹用来存放所要更换的icon图标

2.配置nw.exe所在目录的package.json文件,在icon配置项写上icon的文件路径:

这样就将打开软件的图标修改了

将打开的页面图标也修改一下

三、相关知识

1.使用Nodejs在Windows上调用CMD命令

要用nodejs执行cmd,需要引入一个包node-cmd

npm install node-cmd
var cmd=require('node-cmd');

cmd.get('notepad',//画图板
  function(data){
    console.log("data")
  }); cmd.get('C:\\Windows\\System32\\Calc.exe', //计算器
  function(data){
    console.log("cacul")
  }); cmd.run('touch example.created.file');
// notepad--------打开记事本
//'mspaint' 画图板   
cmd.get('dir ',function(err,data,stderr){//执行cmd dir命令
console.log(data);
document.write(data);
})
cmd.run();
 

2.NWjs读取文件

调用nodejs内置模块

var fs = require('fs');
 //读文件
fs.readFile('package.json', function (err, data) {
  if (err) {
    document.write( err.message);
    return;
  } else {
    console.log(data);
  }
});
//写文件
fs.writeFile('c:/ecsp/ecsp.ini',params,'utf8',function(error){
  if(error){
    console.log(error);
    return false;
  }
  console.log('写入成功',params);
  //fs.unlink删除文件
  fs.unlink('c:/ecsp/usb.xml',function(error){
    if(error){
      console.log(error);
      return false;
    }
    console.log('删除文件成功');
  }) })
//执行escpou.exe文件
cmd.get('C:\\ecsp\\escpout.exe',function(data){
  console.log('执行.exe命令'+data);
})

3.css样式(消除input,button之间的间距)

代码:

效果:

问题:input,button标签之间出现了间距,这并不是我们所期望的。

解决方法:

1.在父级元素上设置属性:font-size:0px;
将input父级字体(font-size)设为0px,可以消除间隔,但是得重新设置内联元素(input)的字体大小;

2.去掉input,button标签之间的空格

3.设置input为块元素,并且给一个左浮动

效果:

原因:

input是内联块状元素(inline-block);内联元素是当做字体来处理的,字体之间是有间隔的,所以内联元素之间也是有间隔的。

相关连接:https://www.cnblogs.com/yswenli/archive/2018/01/31/8393787.html  https://blog.csdn.net/yczz/article/details/52108760

NW.js使用及打包的更多相关文章

  1. NW.js将网站打包成桌面应用

    需求:已有一个网站,因为浏览器兼容性等问题,想自己封装一个浏览器,打开时固定打开这个网站,通过这样的封装,将网站变成桌面应用程序. 1. 下载并安装NW.js的最新稳定版本(NW.js) 2. 创建一 ...

  2. angular打包(二):nw.js

    1 npm build 把ng编译出dist 2 单独写一个package.json 放在dist文件夹里. { "name": "app", "ma ...

  3. 使用nw.js将html项目打包为桌面程序

    首先需要确保电脑已经布置好node.js环境 1.下载并全局安装nw.js npm install nw -g 2.安装nw-builder模块 npm install nw-builder -g 3 ...

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

    第0.1节 HTML5和桌面软件开发的碰撞 当我们谈论桌面软件开发技术的时候,你会想到什么?如果不对技术本身进行更为深入的探讨,在我的世界里,有这么多技术概念可以被罗列出来(请原谅我本质上是一个Win ...

  5. 使用NW.js封装微信公众号菜单编辑器为桌面应用

    开发微信公众号的朋友都会遇到一个常见的需求就是修改自定义菜单,如果每个人都去开发这个不经常使用的功能确实有点浪费时间.前段时间在github上找到一个仿企业号的菜单编辑界面,结合微信的C# SDK开发 ...

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

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

  7. NW.js 简介与使用

    简介 (1)以网络最流行的技术编写原生应用程序的新方法 (2)基于HTML5, CSS3, JS and WebGL而编写 (3)完全支持nodejs所有api及第三方模块 (4)可以使用DOM直接调 ...

  8. NW.js 桌面应用程序

    nw.js官网    https://nwjs.io/downloads/ 中文网:https://nwjs.org.cn/ 参考文档 https://www.cnblogs.com/xuanhun/ ...

  9. nw.js的localStorage的物理储存位置

    前言 因为在做美团外卖商家端的nw.js壳子项目,需要保证在壳子里面使用localStorage的数据可以持久化保存. 发现nw可以保存,即使删除应用重写打包也可以保存,所以解决了这个需求,但是还是需 ...

随机推荐

  1. Spring Cloud Eureka 你还在让它裸奔吗??

    前些天栈长在微信公众号Java技术栈分享了 Spring Cloud Eureka 最新版 实现注册中心的实战教程:Spring Cloud Eureka 注册中心集群搭建,Greenwich 最新版 ...

  2. javaScript设计模式之面向对象编程(object-oriented programming,OOP)(一)

    面试的时候,总会被问到,你对javascript面向对象的理解? 面向对象编程(object-oriented programming,OOP)是一种程序设计范型.它讲对象作为程序的设计基本单元,讲程 ...

  3. 『练手』005 Laura.SqlForever历史遗留 的 架构思想缺陷

    005 Laura.SqlForever历史遗留 的 架构思想缺陷 我们 比较一下 Laura.WinFramework 和 Laura.XtraFramework 的差异: Laura.WinFra ...

  4. 使用 ASP.NET Core MVC 创建 Web API(一)

    从今天开始来学习如何在 ASP.NET Core 中构建 Web API 以及每项功能的最佳适用场景.关于此次示例的数据库创建请参考<学习ASP.NET Core Razor 编程系列一> ...

  5. 滤波器——BoxBlur均值滤波及其快速实现

    个人博客地址:滤波器--BoxBlur均值滤波及其快速实现 动机:卷积核.滤波器.卷积.相关 在数字图像处理的语境里,图像一般是二维或三维的矩阵,卷积核(kernel)和滤波器(filter)通常指代 ...

  6. axios(封装使用、拦截特定请求、判断所有请求加载完毕)

    博客地址:https://ainyi.com/71 基于 Promise 的 HTTP 请求客户端,可同时在浏览器和 Node.js 中使用 vue2.0之后,就不再对 vue-resource 更新 ...

  7. oracle学习笔记(七) 预编译Statement介绍与使用

    预编译Statement优点 执行效率高 由于预编译语句使用占位符 "?",在执行SQL之前语句会被先发送到Oracle服务器进行语法检查和编译等工作,并将SQL语句加入到Orac ...

  8. 第四章:shiro的INI配置

    4.1 根对象SecurityManager 从之前的Shiro架构图可以看出,Shiro是从根对象SecurityManager进行身份验证和授权的:也就是所有操作都是自它开始的,这个对象是线程安全 ...

  9. footer固定在页面底部的实现方法总结

    方法一:footer高度固定+绝对定位 HTML代码: <body> <header>头部</header> <main>中间内容</main&g ...

  10. [置顶]生鲜配送管理系统_升鲜宝V2.0 销售订单汇总_采购任务分配功能_操作说明

    做好生鲜供应链系统,要注意三个方面,1.分拣 2 采购  3 库存,市面上做的比较成熟的功能,还是分拣这一块(按客户分拣.按订单分拣.按商品分类分拣.按商品分拣.按线路分拣.客户自由组合分拣)[下篇文 ...