使用 electron 把 vue 項目打包成客戶端

1. 新建一個Vue項目

????????新建一個vue項目,或者在已經寫好的vue項目上操作

2. 安裝依賴包

????????需要安裝的包有2個

????????electron

????????electron-builder

????????安裝失敗的,可看另外一篇解決方法https://blog.csdn.net/Anorry/article/details/144061069?spm=1001.2014.3001.5501

3. 在項目根目錄創建文件夾,存放文件

在根目錄新建 electron 文件夾,文件夾下存放兩個文件:main.js(主進程)、preload.js(渲染進程)

main.js

const { app, BrowserWindow, Menu } = require("electron");
const path = require("path");
const NODE_ENV = process.env.NODE_ENV;function createWindow() {Menu.setApplicationMenu(null);// 創建瀏覽器窗口const mainWindow = new BrowserWindow({show: false,minWidth: 1440,minHeight: 900,webPreferences: {partition: String(+new Date()),preload: path.join(__dirname, "preload.js"),},});mainWindow.maximize();mainWindow.show();// 如果是開發環境就把當前運行的web端口做成客戶端預覽// 如果是生產環境就把打包后的index做成客戶端預覽mainWindow.loadURL(NODE_ENV === "development"? "http://localhost:8080": `file://${path.join(__dirname, "../dist/index.html")}`);
}// 這段程序將會在 Electron 結束初始化
// 和創建瀏覽器窗口的時候調用
// 部分 API 在 ready 事件觸發后才能使用。
app.whenReady().then(() => {createWindow();app.on("activate", function () {// 通常在 macOS 上,當點擊 dock 中的應用程序圖標時,如果沒有其他// 打開的窗口,那么程序會重新創建一個窗口。if (BrowserWindow.getAllWindows().length === 0) createWindow();});
});// 除了 macOS 外,當所有窗口都被關閉的時候退出程序。 因此,通常對程序和它們在
// 任務欄上的圖標來說,應當保持活躍狀態,直到用戶使用 Cmd + Q 退出。
app.on("window-all-closed", function () {if (process.platform !== "darwin") app.quit();
});

preload.js

window.addEventListener('DOMContentLoaded', () => {const replaceText = (selector, text) => {const element = document.getElementById(selector)if (element) element.innerText = text}for (const dependency of ['chrome', 'node', 'electron']) {replaceText(`${dependency}-version`, process.versions[dependency])}})

4. 在 vite.config.js 內配置

配置基本路徑 ./ 防止出現打包后打開頁面空白

publicPath: './',
transpileDependencies: true,

5. 在 package.json 內配置入口文件,配置一下運行命令

"main": "electron/main.js","electron": "wait-on tcp:8090 && cross-env NODE_ENV=development electron .",

6. 安裝兩個庫

  • cross-env:該庫讓開發者只需要注重環境變量的設置,而無需擔心平臺設置
  • wait-on:等待資源,此處用來等待url可訪問

為了使項目和electron正常運行,需要先運行項目,使得其開發服務器的url可以正常訪問,然后再開啟electron去加載url。

此處需要安裝兩個庫

7. 配置electron打包命令和配置項

在前面我們安裝了 electron-builder 依賴,所以這里無需安裝

把下面代碼,放到 package.json 內,與 dependencies 同級

"build": {"appId": "com.test","productName": "electron打包測試","copyright": "Copyright ? 2023","mac": {"category": "public.app-category.utilities","icon": "public/icons/icon.icns"},"win": {},"nsis": {"oneClick": false,"allowToChangeInstallationDirectory": true},"files": ["dist/**/*","electron/**/*"],"directories": {"buildResources": "assets","output": "dist_electron"}}

"electron:build": "vite build  --mode production && electron-builder",

8. 運行命令 npm run electron:build 打包

打包成功后,會在根目錄出現一個 dist_electron 文件夾,文件夾下會有一個 .exe 應用程序

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

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

相關文章

六大排序算法:插入排序、希爾排序、選擇排序、冒泡排序、堆排序、快速排序

本章講述數據結構中的六大排序算法 歡迎大佬們踴躍討論,感謝大家支持! 我的博客主頁鏈接 六大排序算法 一.插入排序1.1 直接插入排序1.2 希爾排序 二.選擇排序2.1 單向選擇排序2.2雙向選擇排序2.3 堆排序 三.交換排序3.1 冒泡排序3.2 快速排序3.2.1 Hoa…

el-table手動觸發懶加載

二次修改了一下,確保點擊某一單元格格元素觸發 // 隱藏懶加載箭頭后手動觸發懶加載 expandRows(scope){scope.row.isExpanded !scope.row.isExpanded // 切換展開狀態let isExpanded scope.row.isExpandedconst { table: { toggleRowExpansion, store }} this.$r…

【MySQL】數據庫 Navicat 可視化工具與 MySQL 命令行基本操作

💯 歡迎光臨清流君的博客小天地,這里是我分享技術與心得的溫馨角落 💯 🔥 個人主頁:【清流君】🔥 📚 系列專欄: 運動控制 | 決策規劃 | 機器人數值優化 📚 🌟始終保持好奇心&…

threejs相機輔助對象cameraHelper

為指定相機創建一個輔助對象,顯示這個相機的視錐。 想要在場景里面顯示相機的視錐,需要創建兩個相機。 舉個例子,場景中有個相機A,想要顯示相機A的視錐,那么需要一個相機B,把B放在A的后面,兩個…

反向代理-緩存篇

文章目錄 強緩存一、Expires(http1.0 規范)二、cache-control(http1.1 出現的 header 信息)Cache-Control 的常用選項Cache-Control 常用選項的選擇三、弊端協商緩存一、ETag二、If-None-Match三、Last-modified四、If-Modified-Since瀏覽器的三種刷新方式靜態資源部署策略…

深度學習小麥頭檢測-基于Faster-RCNN的小麥頭檢測——附項目源碼

比賽描述 為了獲得有關全世界麥田的大量準確數據,植物科學家使用“小麥頭”(包含谷物的植物上的穗)的圖像檢測。這些圖像用于估計不同品種的小麥頭的密度和大小。但是,在室外野外圖像中進行準確的小麥頭檢測可能在視覺上具有挑戰性。密集的小麥植株經常重疊,并且風會使照片…

健康管理系統(Koa+Vue3)

系統界面(源碼末尾獲取) 系統技術 Vue3 Koa Nodejs Html Css Js ....... 系統介紹 系統比較簡單,輕輕松松面對結業課堂作業.采用的是基于nodejs開發的Koa框架作為后端,采用Vue框架作為前端,完成快速開發和界面展示. 系統獲取 啊啊啊寶/KoaVue3https://gitee.com/ah-ah-b…

數據清洗代碼:缺失值,異常值,離群值Matlab處理

目錄 基本介紹程序設計參考資料基本介紹 一、過程概述 本過程適用于處理SCADA系統采集到的數據,以及具有類似需求的數據集。處理步驟包括缺失值處理、異常值處理和離群值處理,旨在提升數據質量,增強數據的相關性,同時保持數據的原始特征和隨機性。 二、缺失值處理 對于SC…

Leetcode 每日一題 202.快樂數

目錄 題意 算法思路 過題圖片 算法實現 代碼解析 復雜度分析 題目鏈接 結論 題意 判斷正整數 n 是不是快樂數。 快樂數定義: (1)每次將正整數替換為它每個位置上的數字的平方和。 (2)重復這個過程直到這個數…

【鴻蒙生態崛起】開發者如何把握機遇,應對挑戰,打造卓越應用體驗?

文章目錄 每日一句正能量前言鴻蒙簡析鴻蒙生態的認知和了解鴻蒙生態的崛起分析 鴻蒙生態下開發時遇到的挑戰開發工具不完善技術難度生態競爭抓住機遇、應對挑戰 鴻蒙生態未來的發展趨勢1. 全場景智慧生活的推動者2. 技術創新的引領者3. 開放合作的倡導者對鴻蒙生態和開發者的建…

Nignx部署Java服務測試使用的Spring Boot項目Demo

天行健,君子以自強不息;地勢坤,君子以厚德載物。 每個人都有惰性,但不斷學習是好好生活的根本,共勉! 文章均為學習整理筆記,分享記錄為主,如有錯誤請指正,共同學習進步。…

文本域設置高度 加上文字限制并show出來:

文本域設置高度 :rows"4" 加上文字限制并show出來&#xff1a; maxlength"30" show-word-limit 效果: <el-form-item label"產品備注" prop"remark"><el-input v-model"form.remark" type"textarea"…

區塊鏈軟件系統海外宣發:全球化市場中的策略與實施

隨著區塊鏈技術的快速發展&#xff0c;越來越多的區塊鏈軟件系統進入全球市場&#xff0c;涉及加密貨幣、智能合約、去中心化金融&#xff08;DeFi&#xff09;、供應鏈管理等多個行業應用。為了在激烈的競爭中脫穎而出&#xff0c;區塊鏈軟件系統不僅需要具備卓越的技術能力&a…

springboot413福泰軸承股份有限公司進銷存系統(論文+源碼)_kaic

摘 要 使用舊方法對福泰軸承股份有限公司進銷存系統的信息進行系統化管理已經不再讓人們信賴了&#xff0c;把現在的網絡信息技術運用在福泰軸承股份有限公司進銷存系統的管理上面可以解決許多信息管理上面的難題&#xff0c;比如處理數據時間很長&#xff0c;數據存在錯誤不…

qiankun學習記錄

什么是微前端 微前端是指存在于瀏覽器中的微服務&#xff0c;其借鑒了微服務的架構理念&#xff0c;將微服務的概念擴展到了前端。 如果對微服務的概念比較陌生的話&#xff0c;可以簡單的理解為微前端就是將一個大型的前端應用拆分成多個模塊&#xff0c;每個微前端模塊可以…

配置中心 選型 : Apollo Vs. Nacos Vs. spring cloud config

為什么我們需要一個微服務配置中心&#xff1f; 首先&#xff0c;我們可以想象下&#xff0c;如果沒有配置中心&#xff0c;我們的項目可能是這樣的&#xff1a;不同環境的配置文件都放在項目里面&#xff0c;部署時可以通過啟動參數來指定使用哪個環境的配置。 這種方式有兩…

HarmonyOS(65) ArkUI FrameNode詳解

Node 1、Node簡介2、FrameNode2.1、創建和刪除節點2.2、對FrameNode的增刪改2.3、 FramNode的查詢功能3、demo源碼4、總結5、參考資料1、Node簡介 在HarmonyOS(63) ArkUI 自定義占位組件NodeContainer介紹了自定義節點復用的原理(閱讀本本篇博文之前,建議先讀讀這個),在No…

詳解RabbitMQ在Ubuntu上的安裝

??????? 目錄 Ubuntu 環境安裝 安裝Erlang 查看Erlang版本 退出命令 ?編輯安裝RabbitMQ 確認安裝結果 安裝RabbitMQ管理界面 啟動服務 查看服務狀態 通過IP:port訪問 添加管理員用戶 給用戶添加權限 再次訪問 Ubuntu 環境安裝 安裝Erlang RabbitMq需要…

vue圖片之放大、縮小、1:1、刷新、左切換、全屏、右切換、左旋咋、右旋轉、x軸翻轉、y軸翻轉

先上效果&#xff0c;代碼在下面 <template><!-- 圖片列表 --><div class"image-list"><img:src"imageSrc"v-for"(imageSrc, index) in images":key"index"click"openImage(index)"error"handleI…

【計算機網絡】實驗12:網際控制報文協議ICMP的應用

實驗12 網際控制報文協議ICMP的應用 一、實驗目的 驗證ping命令和tracert命令的工作原理。 二、實驗環境 Cisco Packet Tracer模擬器 三、實驗過程 1.構建網絡拓撲并進行信息標注&#xff0c;將所需要配置的IP地址寫在對應的主機或者路由器旁邊&#xff0c;如圖1所示。 圖…