【打工日记】Go后端开发,零经验2天开发electron应用

by 老麦

无关废话

标题先取了,文章等周末来补充。。。标题先取了,文章等周末来补充。。。标题先取了,文章等周末来补充。。。

三个周末过去了,今天在舍友的提醒下,终于来更新了,果然这种倒逼法,还是有点效果的,话不多说进入正题

背景

这几天突然接到一个需求,需要做一个windows桌面程序,功能很简单,就是登录用户账号,便捷打开公司的共享文件夹。但是我是一个后端go开发程序员呀,一点没接触过开发桌面程序,这可是前端的活。那怎么办呀,没活怎么硬整啦。

一、技术选型

每个新项目的诞生都离不开这个环节,因为我的舍友是做前端的,之前就经常听到他用electron开发桌面应用,然后他的生态和社区都还可以,后期维护和迭代新功能,用起来也有人可以问,比较好维护

然后我们公司前端用的是vue,我就去GitHub搜了一下electron-vue还真有

我们公司前端还用element-ui框架,为了加快开发速度和后续迭代便利性,就引入了这个框架,故最后使用的技术如下

相关版本

开发时,相关的一些版本记录一下,因为electron-vue在2023-10-04,作者已经把这个项目暂停了,免得以后迭代,版本对不上导致出现一些问题

  • npm: '8.19.4'
  • node: '16.20.1'
  • electron:'2.0.18'
  • electron-builder:'^20.19.2'
  • electron-updater:'^3.1.2'

二、开始整活

1. 脚手架安装:electron-vue#getting-started

# Install vue-cli and scaffold boilerplate
npm install -g vue-cli
vue init simulatedgreg/electron-vue my-project

# Install dependencies and run your app
cd my-project
yarn # or npm install
yarn run dev # or npm run dev

2. 安装element2.12依赖

npm install element-ui@2.12.0

3. 面向GPT开发!

三、踩坑和其他

相关命令

# 安装依赖
npm install

# 本地调式
npm run dev

# 构建应用
npm run build
(构建完成再build目录下,会生成安装文件)

打包和更新说明

打包文件和上传说明

当你运行npm run build之后,会再build文件夹生成以下三个文件,需要上传到远端服务器

  • latest.yml:最近版本信息(含版本号,是否更新看版本号,不可以逆着来),如下
  • xxx-share-file Setup 0.0.1.exe:安装程序
  • xxx-share-file Setup 0.0.1.exe.blockmap:文件是一个二进制文件,其中包含应用程序各个文件的哈希值和大小信息

假设上传到,http://127.0.0.1:8000 以下两个文件要对应修改

  • package.json
// package.json
{
  "build": {
    "publish": [
      {
        /// ...
        "url""http://127.0.0.1:8000/"
        /// ...
      }
    ]
  }
}
  • src/main/index.js
function checkAppUpdate(){
    // 设置更新检查的URL
    autoUpdater.setFeedURL("http://127.0.0.1:8000/")
    /// ...
}
更新逻辑说明

应用程序,会去【更新检查URL】拉取latest.yml文件,根据latest.yml记录的信息,进行更新

当版本号变动,如应用是0.0.1,线上latest.yml文件是0.0.2,就会提示更新

(这里有个小问题,当你点不更新,然后又直接关闭应用,还是会触发更新,目前暂未解决)

踩坑集合

1. 代码无签名,估计被当病毒直接删除
  • 当直接上传exe安装文件到共享文件夹,再到所属主机,去直接执行安装,会意外被该主机系统直接删除掉
  • 解决方法:把exe安装文件压缩后上传,再解压安装文件到桌面,再安装即可成功安装
2. 请求公司验证登录接口,发现跨域问题
Failed to load http:xxx/?c=user&a=checkLogin: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:9080' is therefore not allowed access.
  • 将 webSecurity 设为 false 后,CORS 将被禁用
  • 请注意,此操作将会禁用一些其他的安全特性,例如同源政策(SOP),这可能会为你的应用带来潜在的安全风险。如果你完全清楚这些风险并接受它们,可以禁用它
  • 但是,在生产环境中,最好不要禁用 webSecurity(因为我们是内部应用,这个就没关系了)
function createWindow({
    mainWindow = new BrowserWindow({
        // ...代码省略
        webPreferences: {
            webSecurityfalse
        }
        // ...代码省略
    })
}
3. 引入'electron-updater',一直报错

一开始安装的最新版本的,后面换成了3.1.2

{
  "electron-updater""^3.1.2"
}
4. 调试模式下,版本号获取的不是应用的版本号,而是electron本身的版本号,会导致判断是否更新异常

https://blog.csdn.net/Wonder233/article/details/103730365

这文章有说明,但文章较为久远,解决方式还得继续找,不过问题不大,只影响调试模式,后续再解决

5. 打包应用未生成latest.yml

原因:package.json文件的 build 字段下缺失 publish 数据

// package.json
{
  "build": {
     // ...
    "publish": [
      {
        "provider""generic",
        "url""http://127.0.0.1:8000/"
      }
    ]
    /// ...
  }
}
6. 生成的安装文件名带空格,对linux不友好,提供下载链接会出问题

加一下artifactName,如下

// package.json
"build": {
    //...
    "win": {
      "icon""build/icons/icon.ico",
      "artifactName""${productName}_Setup_${version}.${ext}"
    },
    //...
}

本文由 mdnice 多平台发布

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Electron是一个基于Chromium和Node.js的框架,可以帮助开发者使用Web技术(HTML,CSS,JavaScript)来构建跨平台桌面应用程序。VueCli是一个基于Vue.js的命令行工具,可以帮助开发者快速构建Vue.js项目。使用Electron7+VueCli4开发跨平台桌面应用的过程如下: 1. 安装Node.js和npm 在安装Electron和VueCli之前,需要先安装Node.js和npm。Node.js是一个基于Chrome V8引擎的JavaScript运行环境,npm是Node.js的包管理器。安装Node.js和npm可以让你在本地开发环境中运行和管理Electron和VueCli。 2. 安装Electron 在安装Electron之前,需要先创建一个空目录作为项目根目录,然后在命令行中切换到该目录下,执行以下命令: ``` npm init -y npm install electron --save-dev ``` 以上命令会创建一个package.json文件,并将Electron安装到本地项目中。 3. 创建Electron应用 在项目根目录下创建一个名为main.js的文件,这是Electron应用的主进程文件。在main.js中添加以下代码: ```javascript const { app, BrowserWindow } = require('electron') function createWindow () { // 创建浏览器窗口 const win = new BrowserWindow({ width: 800, height: 600, webPreferences: { nodeIntegration: true } }) // 加载index.html文件 win.loadFile('index.html') } app.whenReady().then(() => { createWindow() }) ``` 以上代码创建了一个Electron窗口,并加载了一个名为index.html的文件。在项目根目录下创建一个名为index.html的文件,并添加以下代码: ```html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Hello World!</title> </head> <body> <h1>Hello World!</h1> </body> </html> ``` 以上代码创建了一个包含“Hello World!”文本的HTML页面。 4. 安装VueCli 在命令行中执行以下命令安装VueCli: ``` npm install -g @vue/cli ``` 以上命令会全局安装VueCli。 5. 创建Vue.js应用 在项目根目录下执行以下命令创建一个Vue.js应用: ``` vue create renderer ``` 以上命令会创建一个名为renderer的子目录,并在其中初始化一个Vue.js项目。 6. 集成Vue.js应用 在main.js中添加以下代码将Vue.js应用集成到Electron应用中: ```javascript const { app, BrowserWindow } = require('electron') const path = require('path') function createWindow () { // 创建浏览器窗口 const win = new BrowserWindow({ width: 800, height: 600, webPreferences: { nodeIntegration: true, preload: path.join(__dirname, 'preload.js') // 加载preload.js文件 } }) // 加载renderer/index.html文件 win.loadFile(path.join(__dirname, 'renderer', 'dist', 'index.html')) } app.whenReady().then(() => { createWindow() }) ``` 以上代码添加了一个preload.js文件,并将Vue.js应用的入口文件设置为renderer/dist/index.html。 7. 编译Vue.js应用 在renderer目录下执行以下命令编译Vue.js应用: ``` npm run build ``` 以上命令会生成一个名为dist的子目录,并在其中包含一个编译后的Vue.js应用。 8. 运行应用 在命令行中执行以下命令启动Electron应用: ``` npm start ``` 以上命令会启动Electron应用,并在Electron窗口中显示“Hello World!”文本和一个Vue.js应用。通过Electron7+VueCli4开发跨平台桌面应用,你可以使用Web技术来构建跨平台桌面应用程序,为用户提供更好的体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值