使用vue3.0+ Electron11搭建跨平台桌面应用环境

1,581 阅读4分钟

Electron是一个基于Chromium和 Node.js,可以使用 HTML、CSS和JavaScript构建跨平台应用的技术框架,兼容 Mac、Windows 和 Linux。虽然B/S是目前开发的主流,但是C/S仍然有很大的市场需求。受限于浏览器的沙盒限制,网页应用无法满足某些场景下的使用需求,而桌面应用可以读写本地文件、调用更多系统资源,再加上Web开发的低成本、高效率的优势,这种方式越来越受到开发者的喜爱。

本文一步一步教你如何使用Electron11和vue-cli3,在完全保留vue开发web应用的习惯下,搭建桌面应用。

本文不涉及Electron和vue的开发教程,仅以实现两者结合为目的,如深入学习Electron和vue,请访问官方:

Electron: electronjs.org/

vue: cn.vuejs.org/

vue-cli: cli.vuejs.org/zh/

stylus: stylus-lang.com/

1 创建项目

1.1 使用cnpm加速下载 npm有时下载速度很慢,可以安装cnpm,从国内淘宝镜像下载,执行以下命令:

npm install -g cnpm --registry=https://registry.npm.taobao.org

以后npm直接替换成cnpm使用。

1.2 为什么不使用SimulatedGREG/electron-vue

SimulatedGREG/electron-vue已经很久没有更新了,而且其生成的工程结构并不是vue-cli3。所以放弃使用。

1.3 安装/升级vue-cli3

先执行以下命令,确认下本地安装的vue-cli版本:

vue -V

在写本文时,我使用的是4.5.0版本。

如果本地使用的是vue-cli2.x或者更早版本,可先卸载:

cnpm uninstall vue-cli -g

※注:vue-cli3使用了新的npm包名,与旧版本不一样。 如果还没有安装vue-cli3,先执行以下命令安装:

cnpm install @vue/cli -g

如果你已安装vue-cli3,但不是最新版本,可执行以下命令升级:

(我这里使用cnpm并没有完成升级,所以使用了npm)

npm update @vue/cli -g

1.4 创建vue项目 找个喜欢的目录,执行以下命令,创建vue项目:

(这里把项目名称定为electron-vue)

vue create electron-vue 会出现以下选项(如果熟悉此步骤可跳过本节内容):

Vue CLI v4.5.0
? Please pick a preset: (Use arrow keys)
 default (babel, eslint) 
> Manually select features

选择“Manually select features” (自定义安装,选择vue3.0)。

? Check the features needed for your project: (Press <space> to select, <a> to t
oggle all, <i> to invert selection)
❯◉ Babel
 ◯ TypeScript
 ◯ Progressive Web App (PWA) Support
 ◉ Router
 ◉ Vuex
 ◉ CSS Pre-processors
 ◉ Linter / Formatter
 ◯ Unit Testing
 ◯ E2E Testing

这里选择了常用的模块,请根据实际需求进行选择。(可以选择typescript)

? Use history mode for router? (Requires proper server setup for index fallback 
in production) (Y/n)  n

如果选择了router,这里会询问是否使用history模式。

vue-router 默认使用hash模式(即通过url#hash来跳转页面),使用URL的hash来模拟一个完整的 URL,当URL改变时,页面不会重新加载。 如果使用history,URL就像正常的url,例如 yoursite.com/user/id ,比较好看。但是还需要后台配置支持。

这里我们选择“n”。

? Pick a CSS pre-processor (PostCSS, Autoprefixer and CSS Modules are supported 
by default): (Use arrow keys)
  Sass/SCSS (with dart-sass) 
  Sass/SCSS (with node-sass) 
  Less 
❯ Stylus

选择CSS预处理模块,这里我们使用“Stylus”。

? Pick a linter / formatter config: (Use arrow keys)
  ESLint with error prevention only 
  ESLint + Airbnb config 
❯ ESLint + Standard config 
  ESLint + Prettier

选择ESLint代码格式检查工具的配置,选择“ESLint + Standard config”,标准配置。

? Pick additional lint features: (Press <space> to select, <a> to toggle all, <i
> to invert selection)
❯◉ Lint on save
 ◯ Lint and fix on commit

Line on save表示在保存代码的时候,进行格式检查。

Lint and fix on commit表示在git commit的时候自动纠正格式。

这里只选择“Lint on save”。

? Where do you prefer placing config for Babel, PostCSS, ESLint, etc.? 
  In dedicated config files 
❯ In package.json

这里问把 babel, postcss, eslint 这些配置文件放哪?

In dedicated config files 表示独立文件

In package.json 表示放在package.json里

这里选择“In package.json”。

	? Save this as a preset for future projects? (y/N) N

是否为以后的项目保留这些设置?选择“N”。

然后耐心等待项目安装完成。

1.5 自动安装electron

※注:此过程可能需要科学上网,由于直接从国外镜像下载较慢,可能需要等待很漫长的时间 进入到项目根目录,执行:

vue add electron-builder

接下来出现配置选项:

? Choose Electron Version (Use arrow keys)
  ^4.0.0 
  ^5.0.0 
❯ ^11.0.0

选择Electron版本。选择 “^11.0.0”。

然后耐心等待安装完成。如果中间出现错误中断了,请重复此步骤。

安装完成后会自动在src目录下生成background.js并修改了package.json。

  {
    "name": "electron-vue",
    "version": "0.1.0",
    "private": true,
    "scripts": {
      "serve": "vue-cli-service serve",
      "build": "vue-cli-service build",
      "lint": "vue-cli-service lint",
      "electron:build": "vue-cli-service electron:build",
      "electron:serve": "vue-cli-service electron:serve",
      "postinstall": "electron-builder install-app-deps",
      "postuninstall": "electron-builder install-app-deps"
    },
    "main": "background.js",
    "dependencies": {
      "core-js": "^3.6.5",
      "vue": "^3.0.0",
      "vue-router": "^4.0.0-0",
      "vuex": "^4.0.0-0"
    },
    "devDependencies": {
      "@types/electron-devtools-installer": "^2.2.0",
      "@typescript-eslint/eslint-plugin": "^2.33.0",
      "@typescript-eslint/parser": "^2.33.0",
      "@vue/cli-plugin-babel": "~4.5.0",
      "@vue/cli-plugin-eslint": "~4.5.0",
      "@vue/cli-plugin-router": "~4.5.0",
      "@vue/cli-plugin-typescript": "~4.5.0",
      "@vue/cli-plugin-vuex": "~4.5.0",
      "@vue/cli-service": "~4.5.0",
      "@vue/compiler-sfc": "^3.0.0",
      "@vue/eslint-config-standard": "^5.1.2",
      "@vue/eslint-config-typescript": "^5.0.2",
      "electron": "^11.0.0",
      "electron-devtools-installer": "^3.1.0",
      "eslint": "^6.7.2",
      "eslint-plugin-import": "^2.20.2",
      "eslint-plugin-node": "^11.1.0",
      "eslint-plugin-promise": "^4.2.1",
      "eslint-plugin-standard": "^4.0.0",
      "eslint-plugin-vue": "^7.0.0-0",
      "node-sass": "^4.12.0",
      "sass-loader": "^8.0.2",
      "typescript": "~3.9.3",
      "vue-cli-plugin-electron-builder": "~2.0.0-rc.6"
    }
  }
  

在src目录下会生成background.js或者background.ts

1.6 编译并启动APP

执行以下命令,开始编译APP,并启动开发环境APP:

npm run electron:serve

编译成功后,就会出现开发环境的APP了。

然后根据electron 文档进行相关开发 www.electronjs.org/