【Electron】electron-vue 借助 element-ui UI 庫助力桌面應用開發

前面文章我們講過 electron 讓可以用 HTML、JS、CSS 開發桌面應用程序。而 electron-vue 是一個結合了 electron 與 vue 的套件。這樣我們就能方便地使用 vue 快速開發桌面應用。但是,vue 只是在 js 這層面做了大量的便捷的操作。對 UI 并未過多涉及。此時如果您在開發過程中自己實現一套統一主題的 UI 視覺效果,借助成熟的 element-ui 或 bootstrap 肯定是最好的。

本文將介紹怎么讓 electron-vue 與 element-ui 結合更加快捷開發我們的桌面應用程序。

一、安裝 element-ui

這個安裝非常簡單。
如下命令:

> npm i element-ui -S

記住這個命令是在 electron-vue 創建的項目根目錄安裝噢~

二、使用 element-ui

安裝成功之后,我們現在就把它用到我們的 electron-vue 項目中。

1)main.js 文件加載 element-ui

打開 src/renderer/man.js 加載 element-ui

......
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'
Vue.use(ElementUI)
......

main.js 加載之后的完整代碼示例:

import Vue from 'vue'
import axios from 'axios'import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'import App from './App'
import router from './router'
import store from './store'Vue.use(ElementUI)if (!process.env.IS_WEB) Vue.use(require('vue-electron'))
Vue.http = Vue.prototype.$http = axios
Vue.config.productionTip = false/* eslint-disable no-new */
new Vue({components: { App },router,store,template: '<App/>'
}).$mount('#app')

在 main.js 加載 element-ui 之后,您可以在任何 .vue 文件中直接使用 element-ui 提供的組件。

2)使用 element-ui 組件

為了能快速驗證您安裝的 element-ui 是否生效。我們可以用 src/renderer/App.vue 來進行演示。

打開 App.vue 加入以下代碼:

<el-row><el-button>默認按鈕</el-button><el-button type="primary">主要按鈕</el-button><el-button type="success">成功按鈕</el-button><el-button type="info">信息按鈕</el-button><el-button type="warning">警告按鈕</el-button><el-button type="danger">危險按鈕</el-button>
</el-row>

注:此代碼就定要加在 <template>...</template> 里面。

此時我們可以通過yarn run devnpm run dev 查看效果。此時會看到顯示一組按鈕。

三、編譯安裝包

我們通過 yarn run dev 這種形式開發能正常顯示結果。但是它存在一個問題:通過 electron-packageelectron-builder 編譯成安裝包的時候會導致界面空白一片。

終于原因是 electron-vue 默認的組件里面只有 vue 才在編譯白名單內。如果使用了第三方的的類庫,一定要加到白名單。

修改:./.electron-vue/webpack.renderer.config 腳本。腳本如下代碼:

let whiteListedModules = ['vue']

更改為:

let whiteListedModules = ['vue', 'element-ui']

如果以后加載了其他的跟頁面渲染相關的類庫,都要在這里添加到白名單。否則,通過 yarn run buildnpm run build 生成的安裝包都將無法正常渲染界面出現空白的情況。

四、示例欣賞

以下示例就是我自己開發的一小玩意殘次器。
它包含:

  • electron-vue
  • element-ui UI 庫
  • electron-package 打包
  • 自定義系統托盤圖標以及托盤圖標右鍵菜單
  • 自定義系統標題欄(最小化/最大化/關閉)

注:在修改 src/main/index.js 的時候一定要注意開發環境與編譯環境的處理。比如,我的處理方式如下:

if (process.env.NODE_ENV !== 'development') {// 系統托盤右鍵菜單var trayMenuTemplate = [{label: '設置',click: function () {} //打開相應頁面},{label: '意見反饋',click: function () {}},{label: '幫助',click: function () {}},{label: '關于我們',click: function () {}},{label: '退出',click: function () {app.quit();}}];trayIcon = path.join(__dirname, 'static/app.ico');appTray  = new Tray(trayIcon);// 圖標的上下文菜單const contextMenu = Menu.buildFromTemplate(trayMenuTemplate);// 設置此托盤圖標的懸停提示內容appTray.setToolTip("It助手\n您的開發小幫手");// 設置此圖標的右鍵菜單appTray.setContextMenu(contextMenu);}

關鍵代碼:

if (process.env.NODE_ENV !== 'development') {
// code ...
}

通過 yarn run dev 的時候就是開發環境。通過 yarn run build 的時候就是編譯環境。上面就是判斷當前環境不是開發環境的時候生效。因為,在開發環境有很多如果底層支持的功能(系統托盤圖標)是無法在開發環境使用的。所以,我們要做環境區分。

xxx.png


喜歡的朋友記得點贊、收藏、關注哦!!!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/904646.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/904646.shtml
英文地址,請注明出處:http://en.pswp.cn/news/904646.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Linux/AndroidOS中進程間的通信線程間的同步 - 消息隊列

本文介紹消息隊列&#xff0c;它允許進程之間以消息的形式交換數據。數據的交換單位是整個消息。 POSIX 消息隊列是引用計數的。只有當所有當前使用隊列的進程都關閉了隊列之后才會對隊列進行標記以便刪除。POSIX 消息有一個關聯的優先級&#xff0c;并且消息之間是嚴格按照優…

深入理解進程與線程、進程池與線程池:企業級開發實戰指南

簡介 并發編程是現代軟件開發的核心能力,而進程與線程、進程池與線程池是實現高效并發的關鍵技術。 本文將從基礎概念出發,深入解析它們的工作原理、優勢及適用場景,并提供Python、Java、C#等主流語言的實戰代碼,幫助開發者掌握企業級并發編程的最佳實踐。 一、進程與線程…

解鎖 LLM 推理速度:深入 FlashAttention 與 PagedAttention 的原理與實踐

寫在前面 大型語言模型 (LLM) 已經滲透到我們數字生活的方方面面,從智能問答、內容創作到代碼輔助,其能力令人驚嘆。然而,驅動這些強大模型的背后,是對計算資源(尤其是 GPU)的巨大需求。在模型推理 (Inference) 階段,即模型實際對外提供服務的階段,速度 (Latency) 和吞…

Go使用Gin寫一個對MySQL的增刪改查服務

首先用SQL創建一個包含id、name屬性的users表 create table users (id int auto_incrementprimary key,name varchar(255) null );查詢所有用戶信息&#xff1a; func queryData(db *sql.DB, w http.ResponseWriter) {rows, err : db.Query("SELECT * FROM users"…

鍵盤彈起導致頁面上移

問題&#xff1a;聊天頁面&#xff0c;如果輸入框設置了adjust-position屬性為true&#xff0c;會導致鍵盤彈起時&#xff0c;整個頁面上移&#xff0c;頂部導航欄也會跟著上移。 我想要的效果&#xff1a;鍵盤彈起時&#xff0c;頁面內容上移&#xff0c;頂部導航欄保持不動 …

機器視覺的手機FPC油墨絲印應用

在現代智能手機制造過程中&#xff0c;精密的組件裝配和質量控制是確保產品性能和用戶體驗的關鍵。其中&#xff0c;柔性印刷電路板&#xff08;FPC&#xff09;的油墨絲印工藝尤為關鍵&#xff0c;它不僅影響到電路板的美觀&#xff0c;更直接關系到電路的導電性能和可靠性。而…

ChromeDriverManager的具體用法

ChromeDriverManager 是 webdriver_manager 庫的一部分&#xff0c;它用于自動管理 ChromeDriver 的下載和更新。使用 ChromeDriverManager 可以避免手動下載 ChromeDriver 并匹配系統中安裝的 Chrome 瀏覽器版本。以下是 ChromeDriverManager 的基本用法&#xff1a; 步驟 1…

RPC、gRPC和HTTP的區別

RPC 只是一種屏蔽遠程過程調用的設計&#xff0c;它與HTTP不是對立的&#xff0c;兩者不是一個層面的概念。 RPC底層通信可以使用TCP實現&#xff08;如Thrift&#xff09;&#xff0c;也可以使用HTTP實現&#xff08;如gRPC&#xff09;&#xff0c;其本身并無限制。 1. 概念…

安裝Pod網絡插件時pod狀態變為ImagePullBackOff

本文摘自于我的免費專欄《Kubernetes從0到1&#xff08;持續更新&#xff09;》請多關注 文章目錄 先看案發現場解決過程如下原因剖析解決方法 先看案發現場 原因是在下載Pod網絡插件的時候pod始終為ImagePullBackOff wget https://raw.githubusercontent.com/coreos/flannel…

藍橋杯第十六屆c組c++題目及個人理解

本篇文章只是部分題目的理解&#xff0c;代碼和思路僅供參考&#xff0c;切勿當成正確答案&#xff0c;歡迎各位小伙伴在評論區與博主交流&#xff01; 題目&#xff1a;2025 題目解析 核心提取 要求的數中至少有1個0、2個2、1個5 代碼展示 #include<iostream> #incl…

使用mermaidchart 顯示graph LR

使用mermaidchart 顯示graph LRMermaid Chart - Create complex, visual diagrams with text. A smarter way of creating diagrams.

基于計算機視覺的試卷答題區表格識別與提取技術

基于計算機視覺的試卷答題區表格識別與提取技術 摘要 本文介紹了一種基于計算機視覺技術的試卷答題區表格識別與提取算法。該算法能夠自動從試卷圖像中定位答題區表格&#xff0c;執行圖像方向矯正&#xff0c;精確識別表格網格線&#xff0c;并提取每個答案單元格。本技術可…

SpringAI實現AI應用-自定義顧問(Advisor)

SpringAI實戰鏈接 1.SpringAl實現AI應用-快速搭建-CSDN博客 2.SpringAI實現AI應用-搭建知識庫-CSDN博客 3.SpringAI實現AI應用-內置顧問-CSDN博客 4.SpringAI實現AI應用-使用redis持久化聊天記憶-CSDN博客 5.SpringAI實現AI應用-自定義顧問&#xff08;Advisor&#xff09…

【HarmonyOS 5】App Linking 應用間跳轉詳解

目錄 什么是 App Linking 使用場景 工作原理 如何開發 1.開通 App Linking 2.確定域名 3.服務端部署 applinking.json 文件 4.AGC綁定域名 5.項目配置 6.組裝聚合鏈接 7.解析聚合鏈接中的參數 其他 如何獲取應用ID 什么是 App Linking App Linking 是一款創建跨…

什么是變量提升?(形象的比喻)

當然&#xff01;可以用幾個生活中的比喻來形象地解釋變量提升&#xff1a; ??1. 書架的占位符?? 想象你有一個書架&#xff0c;但還沒放書。 ? 變量提升&#xff08;var&#xff09;&#xff1a; 你先在書架上貼了一個標簽&#xff08;比如寫“我的書”&#xff09;&…

C++面向對象編程入門:從類與對象說起(一)

C語言是面向過程&#xff0c;關注的是過程&#xff0c;分析出求解問題的步驟&#xff0c;通過函數調用逐步解決問題&#xff0c;而C面向的是對象&#xff0c;關注的是對象&#xff0c;將一件事拆解成多個對象&#xff0c;靠對象之間互交完成。 目錄 類的定義 類的兩種定義 …

uniapp tabBar 中設置“custom“: true 在H5和app中無效解決辦法

uniapp小程序自定義底部tabbar&#xff0c;但是在轉成H5和app時發現"custom": true 無效&#xff0c;原生tabbar會顯示出來 解決辦法如下 在tabbar的list中設置 “visible”:false 代碼如下&#xff1a;"tabBar": {"custom": true,//"cust…

SpringBoot學生操行評分系統源碼設計開發

概述 基于SpringBoot框架開發的學生操行評分系統完整項目&#xff0c;該系統采用主流技術棧開發&#xff0c;包含完善的評分管理功能模塊&#xff0c;是學校管理、教育培訓機構理想的數字化解決方案&#xff0c;非常適合作為設計參考或二次開發基礎項目。 主要內容 5.1 管理…

從代碼學習深度學習 - 單發多框檢測(SSD)PyTorch版

文章目錄 前言工具函數數據處理工具 (`utils_for_data.py`)訓練工具 (`utils_for_train.py`)檢測相關工具 (`utils_for_detection.py`)可視化工具 (`utils_for_huitu.py`)模型類別預測層邊界框預測層連接多尺度預測高和寬減半塊基礎網絡塊完整的模型訓練模型讀取數據集和初始化…

基于STM32的溫濕度光照強度仿真設計(Proteus仿真+程序設計+設計報告+講解視頻)

這里寫目錄標題 **1.****主要功能****2.仿真設計****3.程序設計****4.設計報告****5.下載鏈接** 基于STM32的溫濕度光照強度仿真設計(Proteus仿真程序設計設計報告講解視頻&#xff09; 仿真圖Proteus 8.9 程序編譯器&#xff1a;keil 5 編程語言&#xff1a;C語言 設計編號…