Electron-Vue 開發下 dev/prod/webpack server各種路徑設置匯總

背景

在實際開發中,我發現團隊對于這幾個路徑的設置上是純靠猜的,通過一點點地嘗試來找到可行的路徑,這是不應該的,我們應該很清晰地了解這幾個概念,以下通過截圖和代碼進行細節講解。

npm run dev 下的路徑如何處理?

  1. 我們要搞明白 npm run dev 在干什么?

    1. 這個過程使 webpack 啟動了一個本地 http 服務,什么是 http 服務,就是你可以通過 url 的方式(http://loclahost:9080/xxxx) 來獲取具體的資源文件,例如 http://localhost:9080/index.html 要獲取 index.html 這個服務就會根據邏輯去提取 index.htm 數據并輸出出去

    2. 上面的 index.html 是放在內存里面的,webpack 在 run dev 時,會先根據 webpack.xxxx.config.js 配置文件進行打包,但是這個打包結果并不放在硬盤上,而是放在內存里,最終也是要打包成 index.html + index.js(這個就是一堆源碼打包的最終 js)

  1. webpack dev server 這個 http 服務會同時監聽源碼入口引入的其他模塊代碼,只要這些代碼有改變,那么 webpack 就會重新打包 index.js

  1. 例如__static 路徑是在 webpack.xxxxx.config.js 進行配置的

  1. 這里要記得渲染進程和主進程是兩個獨立進程,它們分別都有自己的 webpack.xxxx.config.js 文件,因此兩者的__static 設置的可能并不相同

npm run build 時的路徑

  1. npm run build 時是生產環境下的命令

  2. 生產會把代碼都打包到 dist 路徑下,后續運行的也不是 webpack dev server http 服務來啟動,這時 index.html 下可以定義一些路徑

  1. 因為渲染進程是以 src/index.ejs 作為 index.html 生成模板的,所以 index.ejs 最終打包的位置就是__dirname 的位置,如果你想找到 dist/electron/static 則是需要上翻 3 層,就到了 static,這樣后續 index.js 使用全局_static 就能很方便地找到 static 路徑了

  2. 如果你需要找 dist/ 的話,那需要上翻 4 層,以此類推

  1. 針對不同的渲染進程,你可以配置不同的模板,來定義自己的__static

webpack dev server 的 static 是啥?

  1. 這里的 static 并不是一個具體目錄的名字,這是一個配置 key,這個 key 的意思是 dev server http 服務啟動后,除了從打包根路徑 dist/electron/renderer/pages/main/ 訪問 index.html 和 index.js 文件外,當訪問一張圖片時,dev server 服務去哪里找呢?我們從下面的這個配置就知道是項目根目錄下找,這里是個數組,你可以配置多個資源文件路徑,也即意味著可以在多個目錄下找資源文件

  2. 這里的意思是當你訪問/static/imgs/logo.png,那就是從根目錄下訪問這個 logo.png,生產環境

  1. 下面就是__static 就是絕對路徑, dev 環境下 http://localhost:9080/static/imgs/logo.png

  2. 對于 vue 文件中直接訪問的圖片 如 img src=“../../logo.png”,這個 webpack 并不處理,因為它不知道怎么處理,dev 環境下就是根據配置的資源文件路徑下找,但是 prod 環境下,就靠你拷貝具體的資源文件夾到何時的路徑了

  3. file-loader/url-loader 主要是處理哪些顯式引入的,且能正確定位位置的資源文件,將其選擇是否 base64 集成或者遷移到打包后的文件下的 imgs/* 下

preload.js 和 inject.js 文件的引入

  1. 你不能引用源碼的入口文件 index.js,原因是源碼的入口文件還沒有打包呢,你引進這個源碼 index.js 就是引入 index.js,不是把所有 index.js 引入的其他代碼都引入了(沒有任何機制在幫你做這件事)

    1. 你可以用 webpack dev server 起一個服務,來單獨打包這個 js,然后對外輸出,你就可以引入 localhost:9080/preload.js,這樣是否支持熱更,不得而知

  2. 因此,你必須直接引打包完成的 dist/electron/preload/web/whatsapp/preload.js 這個文件,這個文件是整合好的,引入就全引入了

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

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

相關文章

前端-處理數據的函數

判斷數據是否為空,對象是否存在某屬性,屬性值是否為空,對大數據進行換算,對單位進行轉換. 目錄 1.格式化數據 2.判斷值是否為空(包括對象、數組、字符串、數值類型) (1)值是0不表示空 (2)值是0表示空 3. 檢查對象是否具有指定名…

基礎入門-Web應用蜜罐系統堡壘機運維API內外接口第三方拓展架構部署影響

知識點: 1、基礎入門-Web應用-蜜罐系統 2、基礎入門-Web應用-堡壘機運維 3、基礎入門-Web應用-內外API接口 4、基礎入門-Web應用-第三方拓展架構 一、演示案例-Web-拓展應用-蜜罐-釣魚誘使 蜜罐:https://hfish.net/ 測試系統:Ubuntu 20.04 …

Android運行低版本項目可能遇到的問題

Android運行低版本項目可能遇到的問題 低版本項目總是遇到各種問題的,耐心點 一、gradle-xxx.xxx.xxx.zip一直下載不下來 在gradle-wrapper.properties可以試下 distributionBaseGRADLE_USER_HOME distributionPathwrapper/dists zipStoreBaseGRADLE_USER_HOME …

springboot中Controller內文件上傳到本地以及阿里云

上傳文件的基本操作 <form action"/upload" method"post" enctype"multipart/form-data"> <h1>登錄</h1> 姓名&#xff1a;<input type"text" name"username" required><br> 年齡&#xf…

智慧城市工程:相關學點、優勢、未來發展

目錄 相關學點&#xff1a; 智慧城市的優勢 挑戰與未來發展 智慧城市工程是利用現代信息技術和數據分析手段&#xff0c;提升城市管理和服務水平&#xff0c;實現城市運行的智能化、便捷化和高效化的一種新型城市發展模式。智慧城市通過整合物聯網&#xff08;IoT&#xff0…

授權模型MAC

MAC&#xff08;Mandatory Access Control&#xff09;是一種授權模型&#xff0c;用于實現對系統資源訪問的強制控制。在MAC模型中&#xff0c;授權是基于預先定義的安全策略&#xff0c;且該策略由系統管理員來配置和管理。 在MAC模型中&#xff0c;每個用戶和每個資源都被賦…

看板工具助力餐飲與酒店行業實現數字化轉型,提升管理與運營效率

在餐飲與酒店行業&#xff0c;服務質量和客戶體驗是衡量企業成功的關鍵因素。隨著客戶需求的不斷多樣化以及市場競爭的加劇&#xff0c;傳統的管理模式逐漸難以滿足高效運營的需求。尤其在高峰期&#xff0c;如何優化內部流程、提高服務效率和響應速度&#xff0c;成為了許多餐…

2024年CCF 非專業級軟件能力認證CSP-J/S 第二輪( 提高組) 染色(color)

完整題目內容可前往下方鏈接&#xff1a; 染色&#xff08;color&#xff09;_C_嗨信奧-玩嗨信息奧林匹克競賽-少兒編程題庫學習中心https://www.hixinao.com/tiku/cpp/show-4118.html 若需更多真題&#xff0c;可前往題庫中心查找&#xff0c;題庫中心涵蓋白名單賽事真題&am…

OpenIPC開源FPV之Adaptive-Link天空端代碼解析

OpenIPC開源FPV之Adaptive-Link天空端代碼解析 1. 源由2. 框架代碼2.1 消息機制2.2 超時機制 3. 報文處理3.1 special報文3.2 普通報文 4. 工作流程4.1 Profile 競選4.2 Profile 研判4.2.1 回退策略4.2.2 保持策略 4.3 Profile 應用 5. 總結6. 參考資料7. 補充資料7.1 RSSI 和 …

labelme標簽批量轉換數據集json_to_dataset

文章目錄 labelme標簽批量轉換數據集json_to_dataset轉換原理單張圖片轉換多張圖片批量轉換bat腳本循環法 標注圖片提取標注圖片轉單通道 labelme標簽批量轉換數據集json_to_dataset 轉自labelme批量制作數據集教程。 轉換原理 在安裝了labelme的虛擬環境中有一個labelme_js…

Apache Kylin最簡單的解析、了解

官網&#xff1a;Overview | Apache Kylin 一、Apache Kylin是什么&#xff1f; 由中國團隊研發具有濃厚的中國韻味&#xff0c;使用神獸麒麟&#xff08;kylin&#xff09;為名 的一個OLAP多維數據分析引擎:&#xff08;據官方給出的數據&#xff09; 亞秒級響應&#xff…

01云計算HCIA學習筆記

筆者今年7月底考取了華為云計算方向的HCIE認證&#xff0c;回顧從IA到IE的學習和項目實戰&#xff0c;想整合和分享自己的學習歷程&#xff0c;歡迎志同道合的朋友們一起討論&#xff01; 第一章 云計算概述 ICT&#xff1a;ICT是世界電信協會在2001年的全球會議中提出的一個綜…

php生成圖片

前提 開啟dg2庫 去掉前面的;注釋&#xff0c;有的可能會帶.dll后綴影響不大 extensiongd2代碼 <?php $file imagecreate(100,50); //先生成圖片資源$color imagecolorallocate($file,255,255,255); //白色$c imagecolorallocate($file,0,100,255);imagefill($file,0…

免費GIS工具箱:輕松將glb文件轉換成3DTiles文件

在GIS地理信息系統領域&#xff0c;GLB文件作為GLTF文件的二進制版本&#xff0c;主要用于3D模型數據的存儲和展示。然而&#xff0c;GLB文件的使用頻率相對較低&#xff0c;這是因為GIS系統主要處理的是地理空間數據&#xff0c;如地圖、地形、地貌、植被、水系等&#xff0c;…

為何VisualRules更適合技術人員使用

什么是規則引擎 規則引擎是一種軟件組件&#xff0c;它允許將業務規則從應用程序的核心代碼中分離出來&#xff0c;以一種更加靈活、易于管理和維護的方式來定義、存儲和執行這些規則。簡單來說&#xff0c;它就像是一個專門處理規則的 “大腦”&#xff0c;可以根據預先設定的…

prometheus 搭建監控

prometheus 下載 prometheus-3.0.0.linux-amd64.tar.gztar -zxvf prometheus-3.0.0.linux-amd64.tar.gzmv prometheus-3.0.0.linux-amd64 prometheus-3vim /etc/systemd/system/prometheus.serviceprometheus.service [Unit] DescriptionPrometheus Wantsnetwork-online.t…

游戲何如防抓包

游戲抓包是指在游戲中&#xff0c;通過抓包工具捕獲和分析游戲客戶端與服務器之間傳輸的封包數據的過程。抓包工具可實現攔截、篡改、重發、丟棄游戲的上下行數據包&#xff0c;市面上常見的抓包工具有WPE、Fiddler和Charles Proxy等。 抓包工具有兩種實現方式&#xff0c;一類…

RestTemplate實時接收Chunked編碼傳輸的HTTP Response

學習調用AI接口的時候&#xff0c;流式響應都是使用的 Transfer-Encoding: chunked&#xff0c;圖方便想用RestTemplate&#xff0c;但是平時用到的都是直接返回響應對象的類型。使用bing搜索到一種方式&#xff0c;使用下面的代碼來讀取&#xff0c;于是掉這個坑里了&#xff…

request.setAttribute()和session.setAttribute()的區別

request.setAttribute() 作用&#xff1a;request.setAttribute()是在一次請求內共享數據 解釋&#xff1a;例如將一個數據保存request域中&#xff0c;然后請求轉發至前端頁面&#xff0c;則數據轉發至前端頁面后會被自動銷毀。簡單點說就是&#xff0c;數據只能用一次就不能…

Java中的Consumer接口應該如何使用(通俗易懂圖解)

應用場景&#xff1a; 第一次程序員A寫好了個基礎的遍歷方法&#xff1a; public class Demo1 {public static void main(String[] args) {//假設main方法為程序員B寫的,此時需要去調用A寫好的一個遍歷方法//1.如果此時B突然發現想將字符串以小寫的形式打印出來&#xff0c;則…