使用 snowpack, vue 和 electron 创建桌面应用程序

网友投稿 684 2022-10-04

本站部分文章、图片属于网络上可搜索到的公开信息,均用于学习和交流用途,不能代表睿象云的观点、立场或意见。我们接受网民的监督,如发现任何违法内容或侵犯了您的权益,请第一时间联系小编邮箱jiasou666@gmail.com 处理。

使用 snowpack, vue 和 electron 创建桌面应用程序

snowpack 3.0 版本已经发布有一段时间了, snowpack 是类似于 webpack 的 js 项目打包,编译工具,但是相对于 webpack, snowpack 开箱即用,对目前市面上比较流行对框架都有预设模版,并且编译打包速度比 webpack 快很多。

因为 snowpack 对很多框架都是开箱即用的,所以像 react, vue ,preact, svelte 只要查看这个文档即可:https://github.com/snowpackjs/snowpack/tree/main/create-snowpack-app/cli

这里介绍一下如何通过 snowpack 的 vue 项目创建 electron 桌面程序,同理可应用于 snowpack 支持的其他框架。

1. 安装 snowpack, 建立项目

首先需要通过 snowpack 创建一个 Vue 项目, 这个很简单:

npx create-snowpack-app desktopapp --template @snowpack/app-template-vue --use-yarn

创建完成之后进入应用目录,执行 yarn start, 就可以通过浏览器查看项目。

2. 安装 electron

接下来安装 electron, 这个也很简单:

npm i --save-dev electron

3. snowpack 项目适配 electron

我们执行一下

yarn build

就可以看到 vue 项目最终打包的目录, 在 build 文件夹下, 然后需要在项目目录下创建一个 main.js 文件:

const { app, BrowserWindow } = require('electron')function createWindow () { const win = new BrowserWindow({ width: 800, height: 600, webPreferences: { nodeIntegration: true } }) win.loadFile('build/index.html')}app.whenReady().then(createWindow)app.on('window-all-closed', () => { if (process.platform !== 'darwin') { app.quit() }})app.on('activate', () => { if (BrowserWindow.getAllWindows().length === 0) { createWindow() }})

这里的 win.loadFile 更改为项目的打包目录。然后修改 public/index.html

Snowpack App

这里尤其需要注意的是 Content-Security-Policy 和 js css 的加载路径,这里改成相对文件的路径,而不是 url 的相对路径。添加信息:

{ "name": "desktop-app", "version": "0.0.1", "author": "nobody", "description": "a desktop app based electron.", "main": "main.js", "scripts": { "start": "snowpack dev", "build": "snowpack build", "test": "echo \"This template does not include a test runner by default.\" && exit 1" }, "dependencies": { "vue": "3.0.0" }, "devDependencies": { "@snowpack/plugin-dotenv": "^2.0.5", "@snowpack/plugin-vue": "^2.3.0", "electron": "^12.0.0", "snowpack": "^3.0.1" }}

4. 打包和分发应用

使用 Electron Forge 来打包和分发应用程序,添加和导入 Electron Forge :

npx @electron-forge/cli import

导入完成之后 package.json 会进行更新,我们将里面的 start 脚本修改为:

"start": "snowpack build && electron-forge start",

运行 yarn start 就可以启动我们的程序了,第一次启动貌似 logo 没加载出来,我们去 App.vue 文件将 logo 的路径修改为文件地址的相对路径:

再重新运行即可正常显示。

在 electron 里面包含了 node 的环境,因此在 vue 项目中可以执行 node 的 api, 比如使用 got js 来进行 http 请求,它封装的是 node 的 net 模块,而非前端的 fetch 或者 xhr 。

上一篇:MySQL 表示 子-父-祖父关系
下一篇:什么是 Istio?
相关文章

 发表评论

暂时没有评论,来抢沙发吧~