用node-webkit把web应用打包成桌面应用(windows环境)

 更新时间:2018年02月01日 09:30:11   作者:无双  
这篇文章主要介绍了windows环境下用node-webkit把web应用打包成桌面应用的教程,需要的朋友可以参考下

node-webkit是一个Chromium和node.js上的结合体,通过它我们可以把建立在chrome浏览器和node.js上的web应用打包成桌面应用,而且还可以跨平台的哦。很显然比起传统的桌面应用,在某些特定领域用html5+css3+js开发的web应用更加简单和高效,而且还可以使用node.js的功能,所以node-webkit还是很有用处的。

下面我通过一个简单的demo来介绍怎么样把一个web应用打包成一个可执行文件(这里只介绍windows环境)

首先新建一个index.html文件,作为我们这个demo的入口页面,我们暂且就把这个页面当成一个完整的web应用吧。内容随便写点什么,比如:

然后创建配置文件 package.json,内容如下:

其中的main属性就是用来指定入口文件的,这个属性的值可以是本地文件,也可以是远程网址,这样就相当于可以把一个远程的web应用直接变为一个桌面应用了。

除了name与main这两个属性外,还有很多其他有用的属性可以配置,比如指定应用的图标,显不显示浏览器的工具栏,指定浏览器的初始大小等等,具体的配置参数文档可看这里https://github.com/rogerwang/node-webkit/wiki/Manifest-format

现在我们有了两个文件了。

然后将index.html和package.json这两个文件压缩到一个zip压缩包里,命名为app.zip

现在app.zip这个压缩包里的内容应该是这样的:

然后把app.zip这个文件的扩展名改为nw,变为 app.nw

然后下载一个windows版本的node-webkit,解压后得到一个文件夹:

之后我们之前得到的app.nw这个文件就可以用nw.exe来执行了,直接把app.nw拖到nw.exe上就可以了。运行结果如下:

跟在chrome中打开index.html这个页面的效果差不多,当然你可以通过配置package.json这个文件,来隐藏浏览器的工具栏或边框,来使它更像是一个桌面软件。

因为nw文件的运行需要node-webkit环境的支持,所以我们还需要把app.nw这个文件跟node-webkit的环境文件一起打包成一个可执行文件。

首先打开windows的cmd,然后输入如下命令:

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

注意文件路径要根据你的实际情况进行变动,这里假设app.nw放在了node-webkit的主文件夹里,然后输出的app.exe也会在这个文件夹里。

执行命令后我们得到了 app.exe 这个可执行文件。

到了这步,我们已经得到了app.exe这个文件,但如果只有app.exe这个文件还是不够的,这个可执行文件的运行还需要几个dll文件的支持。

其中 nw.pak 与 icudt.dll 这个两个文件是必须要的。

ffmpegsumo.dll 文件是媒体支持文件,如果你的html页面中用到了<video>或<audio>或其它与媒体相关的东西,则必须带上这个文件。

libEGL.dll 和 libGLESv2.dll 这个两个文件则是使用webGL或GPU必须要的

最后我们得到的就是这样一个文件夹:

执行app.exe就可以运行我们的demo了。

但我们大多数人想的是给用户一个exe文件,用户就可以使用了,不用再附带一些其他文件。

嗯,所以我们还可以把app.exe跟其他的文件再打包一次,把上图中的所有文件变成一个可执行文件,用户只要得到这个文件,就能运行我们的应用了。

做这步我们需要一个软件叫Enigma Virtual Box,首先下载和安装这个软件,然后打开它。

然后在Enter Input File Name那里输入我们的app.exe的路径,在Enter Output File Name那里填写我们要把打包出来的可执行文件输出到哪里。最后是把除app.exe外的其它文件拖入到Files那里,遇到提示的话默认就可以了。

最后点击右下角的Process按钮,就大功告成了。

最后我们得到了一个 app_boxed.exe 的文件,只要把这个文件交给用户,用户就可以运行了。

node-webkit虽然方便,但有个很大的缺点是得到的可执行文件有点大,大家在可以在衡量利弊后决定使不使用。

相关文章

  • 详解如何实现一个简单的Node.js脚手架

    详解如何实现一个简单的Node.js脚手架

    本篇文章主要介绍了如何实现一个简单的Node.js脚手架,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-12-12
  • 前端自动化开发之Node.js的环境搭建教程

    前端自动化开发之Node.js的环境搭建教程

    这篇文章主要介绍了前端自动化开发之Node.js环境搭建的相关资料,文中介绍的非常详细,对大家学习或者使用node.js具有一定的参考价值,需要的朋友们下面来一起看看吧。
    2017-04-04
  • NVM管理node版本以及报错解决

    NVM管理node版本以及报错解决

    在开发过程中有时候会遇到老项目和新项目node版本不一致的情况,这篇文章主要给大家介绍了关于NVM管理node版本以及报错解决方法的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2023-12-12
  • 为什么使用koa2搭建微信第三方公众平台的原因

    为什么使用koa2搭建微信第三方公众平台的原因

    这篇文章主要介绍了为什么使用koa2搭建微信第三方公众平台的原因,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-05-05
  • 5分钟教你用nodeJS手写一个mock数据服务器的方法

    5分钟教你用nodeJS手写一个mock数据服务器的方法

    这篇文章主要介绍了5分钟教你用nodeJS手写一个mock数据服务器的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • 详谈nodejs异步编程

    详谈nodejs异步编程

    本文详细介绍了node.js异步编程的分类以及异步编程存在的问题,非常的详尽,非常细致,这里推荐给小伙伴。
    2014-12-12
  • Node.js 使用 zlib 内置模块进行 gzip 压缩

    Node.js 使用 zlib 内置模块进行 gzip 压缩

    这篇文章主要介绍了Node.js 使用 zlib 内置模块进行 gzip 压缩,nodejs为我们提供了一个zlib内置模块,我们可以使用它其中的gzip方法来对传递的数据进行压缩,从而提高数据传递效率,更多相关内容需要的朋友可以参考一下
    2022-09-09
  • Node.js处理I/O数据之使用Buffer模块缓冲数据

    Node.js处理I/O数据之使用Buffer模块缓冲数据

    这篇文章介绍了Node.js使用Buffer模块缓冲数据的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-07-07
  • 为nuxt项目写一个面包屑cli工具实现自动生成页面与面包屑配置

    为nuxt项目写一个面包屑cli工具实现自动生成页面与面包屑配置

    这篇文章主要介绍了为nuxt项目写一个面包屑cli工具实现自动生成页面与面包屑配置,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • node.js连接mongoDB数据库 快速搭建自己的web服务

    node.js连接mongoDB数据库 快速搭建自己的web服务

    这篇文章主要为大家详细介绍了node.js连接mongoDB数据库,如何快速搭建自己的web服务,感兴趣的小伙伴们可以参考一下
    2016-04-04

最新评论