把网页打包成桌面应用程序
前言
现在的应用一般都需要多端,Android 端、iOS 端、PC 端、Web 端,PC 端还包括了3个不同的操作系统平台,所以要想降低开发成本和开发难度,就需要寻找成熟的跨平台方案。Electron 可以让你使用纯 JavaScript 调用丰富的原生 APIs 来创造跨平台的桌面应用。软件开发者只需一次编写程序,即可在 Windows、Linux、Mac 等平台运行,不仅大大降低了程序员的工作量,也大大降低了开发难度(相比QT),使公司的产品可以快速迭代。Android端和iOS端作为两种不同的移动端技术,可以考虑用Flutter,暂且不表,今天我们只讨论Electron。
简介
Electron 是由 Github 开发,用 HTML,CSS 和 JavaScript 来构建跨平台桌面应用程序的一个开源库。通过将 Chromium 和 Node.js 合并到同一个运行时环境中,并将其打包为 Mac , Windows 和 Linux 系统下的应用。
( 图片来自于:https://jlord.us/essential-electron/ )
如上图所示,Electron 结合了 Chromium、Node.js 和用于调用操作系统本地功能的 API。
Electron开发环境配置
安装最新版本的Node.js
按官方的建议,推荐您安装最新的 长期支持版本
或者 当前发行版本
,去 nodejs.org 下载相应平台的安装包即可。
安装完成后执行如下命令确保正常展示版本号即可。
1 | node -v |
用 npm 安装 electron
一般网上建议全局安装,但是局部安装可以让你在不同的 app 中使用不同的 Electron 版本,所以根据个人需要,在「自己编译ntfstool」 一文中,我们强调过,国内用户建议先更换 electron 源,不然有可能会比较慢。
1 | npm config set electron_mirror https://cdn.npm.taobao.org/dist/electron/ |
或者
1 | npm config set electron_mirror https://npm.taobao.org/mirrors/electron/ |
全局安装
1 | # 全局安装 需要的话追加上 --registry='http://registry.npm.taobao.org' 使用淘宝npm源安装 |
局部安装
建议新建个文件夹,然后进入到该文件夹进行操作
1 | # 局部安装 需要的话追加上 --registry='http://registry.npm.taobao.org' 使用淘宝npm源安装 |
文件准备
为你的新Electron应用创建一个新的空文件夹。 打开你的命令行工具,然后从该文件夹运行
1 | npm init |
会根据你的输入生成 package.json
文件,也可以自己新建。
你的项目目录/
└── package.json
新建 main.js、index.html 三个文件(注:其中的 index.html 是你的网页首页)
1 | 你的项目目录/ |
如果是打算局部安装,继续运行下面的命令:
1 | npm install --save-dev electron |
你的项目目录/
├── node_modules
├── package-lock.json
├── package.json
├── main.js
└── index.html
package.json
如果你是自建,可以在 package.json 中添加如下内容
1 | { |
main.js
package.json 中 "main"
指定的入口点文件,即程序主文件,可根据需要修改
1 | const {app, BrowserWindow} = require('electron') |
index.html
1 |
|
启动app
全局安装时
1 | # 进入到包含 package.json 文件的目录,别忽略了后面的点 |
局部安装时
1 | # 进入到包含 package.json 文件的目录 |
正常启动的话会出现如下界面代表成功,页面内容显示的就是index.html定义的页面
打包网站
修改 main.js
让我们来试试把 draw.io 打包成桌面 app,只要将 main.js
中的 mainWindow.loadFile('index.html')
改成 mainWindow.loadURL('https://app.diagrams.net/')
就行。
完整的 main.js 如下:
1 | const {app, BrowserWindow} = require('electron') |
重新启动app
1 | # 全局安装 |
第一次运行可能有点慢,毕竟是国外网站
程序打包发布
安装electron-builder
1 | npm install --save-dev electron-builder |
开始打包
以Mac为例
1 | # 在Mac环境下执行 |
打包好的程序在当前目录dist文件夹下
如果你担心源代码泄漏,可以用 asar 来进行简单的加密,更复杂的还是要靠对代码进行加密混淆才行。
参考文档
Electron 文档
地址:https://www.electronjs.org/docsElectron入门指南 | 一篇文章看懂Electron封装网页并打包应用
地址:https://qii404.me/2019/07/10/electron.html【最简单】Electron 怎么将网页打包成桌面应用(web前端页面怎么生成exe可执行文件)
地址:https://blog.csdn.net/a727911438/article/details/70834467