手摸手Electron + Vue實戰教程(一)

2021-02-20 Electron
1 為什麼要寫這個系列教程

相信看到這篇文章的人,都是對Electron感興趣的, 網上關於Electron的教程其實已經不少了,但是大多都是一些功能點的實現,對於從零開始搭建一個適合自己的項目,估計還是有不少人有點懵逼的。剛好自己也學習Electron一段時間了,想著整理一下自己學習期間的一些筆記和踩坑的地方,從零開始編寫一個小項目。一個由淺入深(或者說從入門到放棄)的套路,一步步帶你敲代碼實現一個小項目,希望能給大家帶來一點點啟發。

2 項目搭建

網上有個比較火的腳手架electron-vue,github 上 12.2k 的 star,大家應該都聽說過或者使用過,但現在我們不使用它,electron-vue是vue-cli2.0的版本,現在都已經出道 4.0 了,再者electron-vue已經很久沒有更新,我們可以使用 vue 最新的腳手架加上插件vue-cli-plugin-electron-builder來搭建項目,項目結構也更加清晰明了。好了不廢話了,開擼吧……

2.1 用vue-cli創建一個項目

打開命令行工具,安裝 node,安裝 yarn,安裝vue-cli腳手架,我這裡使用的版本是:

MacBook-Pro:~ Bill$ node -v
v12.16.1
MacBook-Pro:~ Bill$ yarn -v
1.22.4
MacBook-Pro:~ Bill$ vue -V
@vue/cli 4.3.1
MacBook-Pro:~ Bill$

vue-cli創建初始化項目:

vue create vue-electron-notes

我們選擇自定義創建:

Vue CLI v4.3.1
? Please pick a preset:
  default (babel, eslint)
❯ Manually select features

我們選擇自定義創建,使用babel(語法編譯器)、Router(路由)、CSS Pre-processors(css預處理器)、Linter / Formatter(代碼風格、格式校驗):

Vue CLI v4.3.1
? Please pick a preset: Manually select features
? Check the features needed for your project:
 ◉ Babel
 ◯ TypeScript
 ◯ Progressive Web App (PWA) Support
 ◉ Router
 ◉ Vuex
 ◉ CSS Pre-processors
❯◉ Linter / Formatter
 ◯ Unit Testing
 ◯ E2E Testing

router我們使用history模式,輸入y,進入下一步:

Vue CLI v4.3.1
? Please pick a preset: Manually select features
? Check the features needed for your project: Babel, Router, Vuex, CSS Pre-processors, Linter
? Use history mode for router? (Requires proper server setup for index fallback in production) (Y/n) y

css預處理器我這裡選擇Less,大家也可以選擇自己喜歡的Sass、Stylus:

Vue CLI v4.3.1
? Please pick a preset: Manually select features
? Check the features needed for your project: Babel, Router, Vuex, CSS Pre-processors, Linter
? Use history mode for router? (Requires proper server setup for index fallback in production) Yes
? Pick a CSS pre-processor (PostCSS, Autoprefixer and CSS Modules are supported by default):
  Sass/SCSS (with dart-sass)
  Sass/SCSS (with node-sass)
❯ Less
  Stylus

選擇ESLint代碼檢查工具,我這裡選擇的是「ESLint + Airbnb config」,強烈建議大家一定要在項目內使用ESLint,一直用一直爽,懂的自然懂……該有的規範還是要遵循的:

Vue CLI v4.3.1
? Please pick a preset: Manually select features
? Check the features needed for your project: Babel, Router, Vuex, CSS Pre-processors, Linter
? Use history mode for router? (Requires proper server setup for index fallback in production) Yes
? Pick a CSS pre-processor (PostCSS, Autoprefixer and CSS Modules are supported by default): Less
? Pick a linter / formatter config:
  ESLint with error prevention only
❯ ESLint + Airbnb config
  ESLint + Standard config
  ESLint + Prettier

選擇什麼時候執行ESLint檢查,我這裡兩個都選了,保存時檢查「Lint on save」,向倉庫提交代碼時也檢查「Lint and fix on commit」,不符合規範的代碼我們不允許提交到倉庫:

Vue CLI v4.3.1
? Please pick a preset: Manually select features
? Check the features needed for your project: Babel, Router, Vuex, CSS Pre-processors, Linter
? Use history mode for router? (Requires proper server setup for index fallback in production) Yes
? Pick a CSS pre-processor (PostCSS, Autoprefixer and CSS Modules are supported by default): Less
? Pick a linter / formatter config: Airbnb
? Pick additional lint features:
 ◉ Lint on save
❯◉ Lint and fix on commit

這裡是詢問 babel, postcss, eslint這些配置是單獨的配置文件還是放在package.json 文件中,這裡我們選擇「In dedicated config files」單獨放置:

Vue CLI v4.3.1
? Please pick a preset: Manually select features
? Check the features needed for your project: Babel, Router, Vuex, CSS Pre-processors, Linter
? Use history mode for router? (Requires proper server setup for index fallback in production) Yes
? Pick a CSS pre-processor (PostCSS, Autoprefixer and CSS Modules are supported by default): Less
? Pick a linter / formatter config: Airbnb
? Pick additional lint features: Lint on save, Lint and fix on commit
? Where do you prefer placing config for Babel, ESLint, etc.? (Use arrow keys)
❯ In dedicated config files
  In package.json

這裡是最後的操作,是否保存該配置,如果你下次需要使用相同的配置,那麼可以選擇 yes,我這選擇 no:

Vue CLI v4.3.1
? Please pick a preset: Manually select features
? Check the features needed for your project: Babel, Router, Vuex, CSS Pre-processors, Linter
? Use history mode for router? (Requires proper server setup for index fallback in production) Yes
? Pick a CSS pre-processor (PostCSS, Autoprefixer and CSS Modules are supported by default): Less
? Pick a linter / formatter config: Airbnb
? Pick additional lint features: Lint on save, Lint and fix on commit
? Where do you prefer placing config for Babel, ESLint, etc.? In dedicated config files
? Save this as a preset for future projects? (y/N) no

執行完以上操作,剩下的我們等待項目下載依賴包,vue項目初始化就算搞定了哈。

cd vue-electron-notes進入項目跑一遍yarn serve,這個時候沒什麼問題就已經成功運行起來了!

2.2 在項目內集成Electron

進入我們項目的根目錄,我們執行以下命令來安裝插件vue-cli-plugin-electron-builder

vue add vue-cli-plugin-electron-builder

我們選擇版本^6.0.0:

✔  Successfully installed plugin: vue-cli-plugin-electron-builder

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

這裡靜靜等待安裝即可,它會下載electron的依賴文件 60M 左右,過程可能有點長,跟你的網絡息息相關……

在這等待安裝的過程中,其實我們還可以再嘮嗑嘮嗑另一種頁面可視化安裝vue-cli-plugin-electron-builder的方式,執行以下命令

vue ui

這個時候會自動打開瀏覽器頁面,然後選擇左側插件菜單,搜索安裝插件即可:

我個人更偏向於使用命令安裝,更加簡單方便快捷,當然不管使用上面哪種安裝方法,其結果是一致的。等安裝完畢後會重新構建項目架構,在src目錄下生成background.js文件,並且還新增了啟動命令,如下圖:

到這裡其實還有一個小問題,插件安裝的Electron是 6.0 版本的,但官方最新的版本其實已經到了8.2.5了,為了後續我們可以使用最新的api,我們需要執行命令更新一下版本:

yarn add electron@8.2.5 -D

到這一步,我們所有的安裝都已經完成了,可以運行程序看效果了,要注意我們現在啟動項目的命令已經變成這個了:

yarn electron:serve

這個時候就已經會自動彈出一個程序了,終於大功告成了……

那個,再稍等一下唄,我們去看看剛才執行命令行的地方,是不是有這個警告⚠️呀:

 DONE  Compiled successfully in 1339ms                                                                                                                                     1:52:39 PM

  File                      Size                     Gzipped

  dist_electron/index.js    651.77 KiB               148.32 KiB

  Images and other types of assets omitted.

 INFO  Launching Electron...
(electron) The default value of app.allowRendererProcessReuse is deprecated, it is currently "false".  It will change to be "true" in Electron 9.  For more information please check [https://github.com/electron/electron/issues/18397](https://github.com/electron/electron/issues/18397)

有道翻譯的結果是:allowrendererprocessreuse的默認值是不贊成的,它當前是「false」。在electron9中,它會變成「true」。(好吧我是個英語渣渣……)

為了解決以上告警,我們需要在主進程文件background.js中添加以下代碼:

app.allowRendererProcessReuse = true

今天的項目搭建就先到這裡,如果你覺得也還可以,那麼我們每周四晚不見不散!😉

相關焦點

  • 手摸手Electron + Vue實戰教程(五)
    手摸手Electron + Vue實戰教程系列文章:❝然後在 Home.vue 頁直接調用,加入 vue 的修飾符@keyup.enter可以直接回車鍵執行搜索:有道雲筆記的文件保存觸發是只要一切換了當前打開的文件就自動保存,或者手動ctrl + s保存,我們現在不走這個機制,標題的話只要失焦blur就保存,內容區直接就是實時監聽輸入的內容然後立刻保存
  • 手摸手,帶你用vue擼後臺 系列四(vueAdmin 一個極簡的後臺基礎模板)
    前言做這個 vueAdmin-template 的主要原因是: vue-element-admin 這個項目的初衷是一個vue的管理後臺集成方案,把平時用到的一些組件或者經驗分享給大家,同時它也在不斷的維護和拓展中,比如最近重構了dashboard,加入了全屏功能,新增了tabs-view等等。
  • 手摸手,帶你用 vue 擼後臺 系列三(實戰篇)
    完整項目地址:vue-element-admin 系類文章一:手摸手,帶你用vue擼後臺 系列一(基礎篇) 系類文章二
  • 手摸手教你寫一個命令行終端[electron實戰]
    作為一個完整的實戰項目示例,該終端demo也將集成到Electron開源學習項目electron-playground中,目前這個項目擁有800+ Star⭐️,它最大的特點是所見即所得的演示Electron的各種特性,幫助大家快速學習、上手Electron。
  • Electron實戰
    Electron實戰摘要時間過得真快,在忙碌的工作中,2020 年就已經過去了。雖然到了 2021 年,年齡增加了一歲,白頭髮多了很多,技術學了很多,但是工資卻沒有見漲。那能如何呢?關鍵詞Electron Electron-vue正文一、 背景在開發 xxx 項目的時候,需要用到 electron 技術,為了讓更多同學了解和喜歡 electron,我想通過本文分享這些年的實戰經驗。
  • Electron-vue 開發實戰之插件系統(GUI)
    編者按:本文由 MARKSZ 投稿,接上一篇 「Electron-vue 開發實戰之插件系統(CLI)」前言前段時間,我用electron-vue
  • 【學習教程】Electron+Vue開發跨平臺桌面應用
    vue init simulatedgreg/electron-vue然後根據下面的提示一步步選中選項即可創建項目,如下所示。router:如果你了解vue-router,那麼Electron項目的路由的使用方式和vue-router的使用方式類似。modules:electron-vue 利用 vuex 的模塊結構創建多個數據存儲,並保存在 src/renderer/store/modules 中。
  • Electron集成vue開發
    引言"如果你可以建一個網站,你就可以建一個桌面應用程式。Electro
  • electron-vue仿微信客戶端|electron聊天實例
    最近一直在搗鼓Electron技術,今天給大家分享的是基於electron+vue+electron-vue+vuex+Node+wcPop
  • Vue+Electron開發跨平臺桌面應用
    vue init simulatedgreg/electron-vue然後根據下面的提示一步步選中選項即可創建項目,如下所示。- router:如果你了解vue-router,那麼Electron項目的路由的使用方式和vue-router的使用方式類似。- modules:electron-vue 利用 vuex 的模塊結構創建多個數據存儲,並保存在 src/renderer/store/modules 中。
  • Electron + Vue 開發跨平臺桌面應用
    git clone https://github.com/electron/electron-quick-startcd electron-quick-startnpm installnpm start除此之外,我們可以使用 vue-cli 腳手架工具來創建項目。
  • Electron: 如何以 Vue.js, Vuetify 開始應用
    GitHub: https://github.com/vuejs/vue-cli全局安裝 Vue CLI :yarn global add @vue/cli查看 Vue CLI 版本:$ vue -V@vue/cli 4.4.6創建 Vue.js 應用vue create
  • 手把手教你使用Electron5+vue-cli3開發跨平臺桌面應用
    本文不涉及Electron和vue的開發教程,僅以實現兩者結合為目的,如深入學習Electron和vue,請訪問官方:Electron: https://electronjs.org/vue: https://cn.vuejs.org/vue-cli: https://cli.vuejs.org/zh/stylus: http:/
  • 如何使用Vue + Electron搭建跨平臺應用
    GitHub: https://github.com/vuejs/vue-cli全局安裝 Vue CLI :yarn global add @vue/cli>查看 Vue CLI 版本:$ vue -V@vue/cli 4.4.6創建 Vue.js 應用vue create my-app跟隨引導進行工程配置,如下:
  • Vue入門-實戰教程
    Vue教程整理文章匯總分類連結歡迎閱讀原文直達。Vue2+VueRouter2+Webpack+Axios 構建項目實戰(一)基礎知識概述:http://www.javazhiyin.com/?p=287Vue2+VueRouter2+Webpack+Axios 構建項目實戰(三)認識項目所有文件:http://www.javazhiyin.com/?
  • 基於 Vue3.0+Electron 搭建桌面端應用
    使用vue語法來開發electron項目,有一個比較火的腳手架是electron-vue,不過很久沒有更新了,而且是vue-cli2.x版本的。我們使用Vue CLI腳手架和vue-cli-plugin-electron-builder插件來搭建項目。1、安裝最新版Vue CLI腳手架npm install -g @vue/cli2、創建Vue3項目具體的選項配置,大家自行選擇。
  • Electron+vue打造一個本地播放器(附項目代碼)
    女朋友工作是音頻後期,平常會收集一些音頻音樂,需要看音頻的頻譜波形,每次用au這種大型軟體播放音樂看波形,很不方便,看到她這麼辛苦,身為程序猿的我痛心疾首,於是,就有了這麼一個小軟體,軟體涉及到的技術主要為electron,vue,node,波形的展示主要通過wavesurfer生成。
  • Vue+Electron從零開始打造一個本地播放器
    女朋友工作是音頻後期,平常會收集一些音頻音樂,需要看音頻的頻譜波形,每次用au這種大型軟體播放音樂看波形,很不方便,看到她這麼辛苦,身為程序猿的我痛心疾首,於是,就有了這麼一個小軟體,軟體涉及到的技術主要為electron,vue,node,波形的展示主要通過wavesurfer生成。
  • vue最簡單的入門教程+實戰(vue-cli3.X)
    一、準備工作VUE在日常開發中需要nodejs+npm環境,就是你先要安裝npm。
  • 真正的手摸手帶你實現 Vue 組件庫
    前言如何做一個vuejs UI 組件庫?vue-cli啦// 創建一個 clivue create laoyan-ui手動選擇配置選擇 babel 和 css 預處理器就好了是不是感覺回到了當初學 vue 的時光?對!就是純手摸手的教學好了廢話不多說,創建好了,一起來造作吧