经常忘记网址?将Vue项目一键打包为桌面客户端 十分钟让你解决烦恼(一)

简介: 经常忘记网址?将Vue项目一键打包为桌面客户端 十分钟让你解决烦恼

不知各位朋友是否有以下的烦恼:

  • 管理几十个项目,每个项目的域名和端口记不住
  • 同一套系统在不同浏览器上展示不一样
  • 甲方经常问我项目的网址,其实我也忘记了…
  • 客户习惯使用 C/S 架构的系统,将软件 UI 固化为 WINDOWS 桌面端的应用程序,将一个 Vue 项目摆在他的面前,他看不惯!

解决这类问题的方案之一,就是将项目包装为桌面客户端,就像双击 Excel 那样,就可以进入项目。

那么我们如何去实现呢?

接下来就切入正题!


一、使用 NW.js 打包

NW.js基于Chromium和Node.js。它允许您直接从浏览器调用Node.js代码和模块,并在应用程序中使用Web技术。此外,您可以轻松地将web应用程序打包为本机应用程序。

官网NW.js 官网

优点:免开发、门槛低、体积小

1.1 下载、解压 NW.js

1.1.1 下载 NW.js

进入 NW.js 官网,点击下载最新版,如下图所示。

下载的是一个普通压缩包,如下图所示。

1.1.2 解压 NW.js

接着我们将压缩包解压到指定目录,解压成功后如下图所示。

1.2 配置被打包的项目

1.2.1 新建 package.json

在 1.1 步的目录内新建 package.json 文件。

提示:可以新建一个空白 txt 文档,然后重命名哦!

并将 package.json 文件的内容编辑为:

{
  "main": "index.html",
  "name": "我的 CSDN 博客"
}

其中 main 字段为接下来新建的 html 文件名称,name 字段可以根据需要自定义,完整的配置会在下面提供。

1.2.2 新建 index.html

接着再新建一个 index.html 文件,如下图所示。

提示:可以新建一个空白 txt 文档,然后重命名哦!

并将 index.html 文件的内容编辑为:

<!DOCTYPE html>
<html>
<head>
</head>
<body>
<script language="javascript" type="text/javascript">
        window.location.href='https://blog.csdn.net/qq_41464123';
</script>
</body>
</html>

1.2.3 压缩

然后将 1.2.1 和 1.2.2 步做的 package.jsonindex.html 压缩,如下图所示。

提示:请注意压缩包内不要有文件夹哦!包内应该直接两个文件

1.2.4 更改后缀名

最后将压缩包后缀名,由 zip 改为 nw,如下图所示。

1.3 合成桌面客户端

1.3.1 合成客户端

前面两个步骤完成后,第三步就要合成桌面客户端了。

打开 cmd 窗口,进入当前目录,如下图所示。

提示:Win + R 键打开 “运行” 窗口,然后输入 “cmd” 按回车就可以打开黑框框了哦!

接着直接输入以下命令,开始合成。

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

运行结果如下图所示。

运行后,回到之前的目录,可以发现多了个 app.exe 文件,如下图所示。

双击即可打开,如下图所示。

1.3.2 更换图标

右键刚刚生成的 app.exe 文件,将快捷方式发送到桌面,操作过程如下图所示。

生成之后如下图所示。

接着右键快捷方式,点击属性,操作界面如下图所示。

点击浏览,选择 ico 图标后,点击确认,如下图所示。

提示:若您手上是 png 或 jpg 图片,需要转换为 ico 格式,网上有很多在线转换工具。

最后重命名快捷方式后,就大功告成啦!

最终效果如下图所示。

当然如果需要完整功能,比如窗口大小、是否全屏、顶部图标、是否固定任务栏等,可以参考如下的配置文件,并在 1.2.1 步骤配置。

{
  /**指定程序的起始页面。*/
  "main": "index.html",
  /**字符串必须是小写字母或者数字,可以包含.或者_或者-不允许带空格。name必须全局唯一。*/
  "name": "Blog",
  /**程序描述*/
  "description": "我的 CSDN 博客",
  /**程序版本号*/
  "version": "1.0.0",
  /**关键字*/
  "keywords": ["demo","node-webkit"],
  /**bool值,如果设置为false,将禁用webkit的node支持。*/
  "nodejs": true,
  /**
  * 指定一个node.js文件,当程序启动时,该文件会被运行,启动时间要早于node-webkit加载html的时间。
  * 它在node上下文中运行,可以用它来实现类似后台线程的功能。
  * (不需要可注释不用)
  */
  //"node-main": "js/node.js",
  /**
  * bool值。默认情况下,如果将node-webkit程序打包发布,那么只能启动一个该应用的实例。
  * 如果你希望允许同时启动多个实例,将该值设置为false。
  */
  "single-instance": true,
  /**窗口属性设置 */
  "window": {
    /**字符串,设置默认title。*/
    "title": "我的技术博客",
    /**窗口的icon。*/
    "icon": "img/tubiao.ico.png",
    /**bool值。是否显示导航栏。*/
    "toolbar": false,
    /**bool值。是否允许调整窗口大小。*/
    "resizable": true,
    /**是否全屏*/
    "fullscreen": false,
    /**是否在win任务栏显示图标*/
    "show_in_taskbar": false,
    /**bool值。如果设置为false,程序将无边框显示。*/
    "frame": true,
    /**字符串。窗口打开时的位置,可以设置为“null”、“center”或者“mouse”。*/
    "position": "center",
    /**主窗口的的宽度。*/
    "width": 1920,
    /**主窗口的的高度。*/
    "height": 1080,
    /**窗口的最小宽度。*/
    "min_width": 400,
    /**窗口的最小高度。*/
    "min_height": 335,
    /**窗口显示的最大宽度,可不设。
    "max_width": 800,*/
    /**窗口显示的最大高度,可不设。
    "max_height": 670,*/
    /**bool值,如果设置为false,启动时窗口不可见。*/
    "show": true,
    /**是否在任务栏显示图标。*/
    "show_in_taskbar":true,
    /**
     * bool值。是否使用kiosk模式。如果使用kiosk模式,
     * 应用程序将全屏显示,并且阻止用户离开应用。
     * */
    "kiosk": false
  },
  /**webkit设置*/
  "webkit": {
    /**bool值,是否加载插件,如flash,默认值为false。*/
    "plugin": true,
    /**bool值,是否加载Java applets,默认为false。*/
    "java": false,
    /**bool值,是否启用页面缓存,默认为false。*/
    "page-cache": false
  }
}

二、发布 Vue 项目

聪明的同学已经发现,本篇博客的标题为 《经常忘记网址?将Vue项目一键打包为桌面客户端 十分钟让你解决烦恼》

第一章都在讲将一个网址打包为桌面客户端

但我们手上的不是网址,是一个 localhost(本地版) 的 Vue 项目!

第二章就主要讲解,如何将这个 Vue 项目转换为网址

2.1 选择 Vue 项目

如果你的手上有 Vue 项目,可以忽略本小节;如果没有可以从下面的代码仓库中进行下载,同学们可以挑选自己喜欢的 Vue 项目进行打包。

2.1.1 Vue和SpringBoot的前后端分离开发模板

博客:博客介绍

源代码:GitEEGitHubGitCode

2.1.2 基于 Vue 的大病保险管理系统

博客:博客介绍

源代码:GitEEGitHubGitCode


相关文章
|
2月前
|
JavaScript
Vue中如何实现兄弟组件之间的通信
在Vue中,兄弟组件可通过父组件中转、事件总线、Vuex/Pinia或provide/inject实现通信。小型项目推荐父组件中转或事件总线,大型项目建议使用Pinia等状态管理工具,确保数据流清晰可控,避免内存泄漏。
291 2
|
1月前
|
缓存 JavaScript
vue中的keep-alive问题(2)
vue中的keep-alive问题(2)
276 137
|
5月前
|
人工智能 JavaScript 算法
Vue 中 key 属性的深入解析:改变 key 导致组件销毁与重建
Vue 中 key 属性的深入解析:改变 key 导致组件销毁与重建
760 0
|
4月前
|
人工智能 JSON JavaScript
VTJ.PRO 首发 MasterGo 设计智能识别引擎,秒级生成 Vue 代码
VTJ.PRO发布「AI MasterGo设计稿识别引擎」,成为全球首个支持解析MasterGo原生JSON文件并自动生成Vue组件的AI工具。通过双引擎架构,实现设计到代码全流程自动化,效率提升300%,助力企业降本增效,引领“设计即生产”新时代。
401 1
|
4月前
|
JavaScript 安全
在 Vue 中,如何在回调函数中正确使用 this?
在 Vue 中,如何在回调函数中正确使用 this?
257 0
|
JavaScript 测试技术 容器
Vue2+VueRouter2+webpack 构建项目
1). 安装Node环境和npm包管理工具 检测版本 node -v npm -v 图1.png 2). 安装vue-cli(vue脚手架) npm install -g vue-cli --registry=https://registry.
1228 0
|
7月前
|
JavaScript
vue实现任务周期cron表达式选择组件
vue实现任务周期cron表达式选择组件
992 4
|
5月前
|
JavaScript UED
用组件懒加载优化Vue应用性能
用组件懒加载优化Vue应用性能
|
6月前
|
JavaScript 数据可视化 前端开发
基于 Vue 与 D3 的可拖拽拓扑图技术方案及应用案例解析
本文介绍了基于Vue和D3实现可拖拽拓扑图的技术方案与应用实例。通过Vue构建用户界面和交互逻辑,结合D3强大的数据可视化能力,实现了力导向布局、节点拖拽、交互事件等功能。文章详细讲解了数据模型设计、拖拽功能实现、组件封装及高级扩展(如节点类型定制、连接样式优化等),并提供了性能优化方案以应对大数据量场景。最终,展示了基础网络拓扑、实时更新拓扑等应用实例,为开发者提供了一套完整的实现思路和实践经验。
815 77
|
7月前
|
缓存 JavaScript 前端开发
Vue 基础语法介绍
Vue 基础语法介绍