首頁 web前端 js教程 vue靜態資源打包中的問題

vue靜態資源打包中的問題

Mar 23, 2018 pm 03:19 PM
打包 問題

這次帶給大家vue靜態資源打包中的問題,vue靜態資源打包中的注意事項有哪些,下面就是實戰案例,一起來看一下。

①.vue-cli預設配置打包後部署至特定路徑下靜態資源路徑錯誤問題;

②.靜態資源打包使用相對路徑後css檔案引入大圖片路徑錯誤問題。

1、問題

vue-cli 腳手架產生的預設打包設定檔情況下執行npm run build 打包後,部署專案至特定路徑下:如:

//ip:port/public/springActivity/

#此時造訪:

http://ip:port/public/springActivity/index.html

index.html 可以正常訪問,但是引用的js,css等文件伺服器回應均為404,查看引入的資源路徑如下:

http://ip:port/static/css/app. cea07642cd24c0d7a5c4b9b7afc7ff64.css
http://ip:port/static/js/app.815851e87b083afb82bf.js

2、分析

由上可以誤看出打包後的資源使用了絕對根目錄路徑,因此將專案部署到特定目錄下,其引入的資源路徑無法正確解析。

3、解決

在打包時需要使用相對路徑來處理靜態資源,更改build中資源發布路徑配置(config/index.js, build物件):

將assetsPublicPath: '/'  改為  assetsPublicPath: './',
再次打包,並將資源部署到特定路徑下,然後訪問:

此時index.html可以正常訪問,同時js和css資源也可以正常訪問,但是css中引入的assets目錄下的大圖片資源出錯了(服務端404)

#4. 再分析

查看引入的圖片資源路徑如下:

http://ip:port/public/springActivity/static/css/static/img/question_bg.61a2825.png

實際專案中資源路徑如下:

index.html
static/
 |--js/
  |--*.js
 |--css/
  |--*.css
 |--img/
  |--*.png
登入後複製

很明顯圖片引入路徑有誤。分析圖片引入路徑,發現路徑均多了"/static/css"兩層目錄,猜測是css目錄下的css文件引入圖片路徑為"/static/img/question_bg.61a2825.png" , 查看css文件,css中引入圖片路徑如下:

background:url(static/img/question_bg.61a2825.png)

5、在解決

css文件中路徑有問題,肯定又是打包哪個環節資源路徑沒有配置好,分析打包過程,css是在js中引入的或是寫在vue檔中的,css檔先被less,postcss等處理,處理後會被ExtractTextPlugin處理,ExtractTextPlugin將js中的css全部抽離至app.css檔案。

首先將options.extract設為false,關閉抽離css功能,再次打包並部署至特定目錄,訪問:http://ip:port/public/springActivity/index.html, 啪,頁面正常顯示,大公即將告成。

分析打包後的文件,發現沒有了css文件,發現css檔案全部在app.js檔案中;透過js將css注入index.html檔案中,因此css檔案中引入的圖片資源路徑應該是相對於index.html檔案路徑的,即:"static/img/question_bg.61a2825.png",這與下面css檔案中的圖片資源路徑一致,因此圖片能夠被正常存取。

background:url(static/img/question_bg.61a2825.png)
現在很確定知道問題出在哪裡了,即:ExtractTextPlugin抽離css檔案時沒有轉換資源引入路徑,導致app. css引進了相對app.css目錄為"static/img/ .png"的靜態資源,該路徑相對index.html即為:static/css/static/img/ .png。

因此使用ExtractTextPlugin插件時還需要配置靜態資源路徑參數,透過查詢資料,得知可以透過新增publicPath:"../../"解決此問題:

if (options.extract) {
 return ExtractTextPlugin.extract({
 use: loaders,
 fallback: 'vue-style-loader',
 publicPath:"../../"     //添加
 })
}
登入後複製

打包部署到特定目錄下後訪問index.html文件,頁面一切正常,app.css文件正常引入,圖片資源也正常引入,查看app.css文件引入圖片資源方式如下:

background:url( ../../static/img/question_bg.61a2825.png

publicPath配置後,css檔案中引入的圖片檔案路徑前加入了該路徑配置;

publicPath 屬性值為打包後的app.css檔案至index.html檔案的相對路徑

圖片資源也可以直接放在vue-cli產生的static目錄下規避上述問題,但透過此方式圖片名稱無法增加md5字串,不利於版本控制

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!

推薦閱讀:

datepicker怎麼使用

#mixin的高階元件使用詳解

D3.js建立物流地圖

#

以上是vue靜態資源打包中的問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

分享PyCharm專案打包的簡易方法 分享PyCharm專案打包的簡易方法 Dec 30, 2023 am 09:34 AM

簡單易懂的PyCharm專案打包方法分享隨著Python的流行,越來越多的開發者使用PyCharm作為Python開發的主要工具。 PyCharm是功能強大的整合開發環境,它提供了許多方便的功能來幫助我們提高開發效率。其中一個重要的功能就是專案的打包。本文將介紹如何在PyCharm中簡單易懂地打包項目,並提供具體的程式碼範例。為什麼要打包專案?在Python開發

聚類演算法中的聚類效果評估問題 聚類演算法中的聚類效果評估問題 Oct 10, 2023 pm 01:12 PM

聚類演算法中的聚類效果評估問題,需要具體程式碼範例聚類是一種無監督學習方法,透過對資料進行聚類,將相似的樣本歸為一類。在聚類演算法中,如何評估聚類的效果是一個重要的問題。本文將介紹幾種常用的聚類效果評估指標,並給出對應的程式碼範例。一、聚類效果評估指標輪廓係數(SilhouetteCoefficient)輪廓係數是透過計算樣本的緊密度和與其他簇的分離度來評估聚類效

教你如何診斷常見問題的iPhone故障 教你如何診斷常見問題的iPhone故障 Dec 03, 2023 am 08:15 AM

iPhone以其強大的性能和多方面的功能而聞名,它不能倖免於偶爾的打嗝或技術困難,這是複雜電子設備的共同特徵。遇到iPhone問題可能會讓人感到沮喪,但通常不需要警報。在這份綜合指南中,我們旨在揭開與iPhone使用相關的一些最常遇到的挑戰的神秘面紗。我們的逐步方法旨在幫助您解決這些常見問題,提供實用的解決方案和故障排除技巧,讓您的裝置恢復到最佳工作狀態。無論您是面對一個小故障還是更複雜的問題,本文都可以幫助您有效地解決這些問題。一般故障排除提示在深入研究具體的故障排除步驟之前,以下是一些有助於

解決jQuery無法取得表單元素值的方法 解決jQuery無法取得表單元素值的方法 Feb 19, 2024 pm 02:01 PM

解決jQuery.val()無法使用的問題,需要具體程式碼範例對於前端開發者,使用jQuery是常見的操作之一。其中,使用.val()方法來取得或設定表單元素的值是非常常見的操作。然而,在一些特定的情況下,可能會出現無法使用.val()方法的問題。本文將介紹一些常見的情況以及解決方案,並提供具體的程式碼範例。問題描述在使用jQuery開發前端頁面時,有時候會碰

VSCode功能詳解:它如何幫助你提高工作效率? VSCode功能詳解:它如何幫助你提高工作效率? Mar 25, 2024 pm 05:27 PM

VSCode功能詳解:它如何幫助你提高工作效率?隨著軟體開發產業的不斷發展,開發人員們追求工作效率和程式碼品質成為了他們工作中的重要目標。在這個過程中,程式碼編輯器的選擇成為了一項關鍵的決策。而在眾多的編輯器中,VisualStudioCode(簡稱VSCode)憑藉其強大的功能和靈活的擴展性受到了廣大開發者的喜愛。本文將詳細介紹VSCode的一些功能,探討

Python 應用的獨立宣言:PyInstaller 的自由之路 Python 應用的獨立宣言:PyInstaller 的自由之路 Feb 20, 2024 am 09:27 AM

PyInstaller:Python應用的獨立化PyInstaller是一款開源的python打包工具,它將Python應用程式及其相依性打包為一個獨立的執行檔。這個過程消除了對Python解釋器的依賴,同時允許應用程式在各種平台上運行,包括windows、MacOS和linux。打包過程PyInstaller的打包過程相對簡單,涉及以下步驟:pipinstallpyinstallerpyinstaller--onefile--windowedmain.py--onefile選項建立一個單一

Python 應用的終極進化:PyInstaller 的破繭成蝶 Python 應用的終極進化:PyInstaller 的破繭成蝶 Feb 19, 2024 pm 03:27 PM

PyInstaller是一個革命性的工具,它賦予python應用程式超越其原始腳本形態的能力。透過將Python程式碼編譯成獨立的可執行文件,PyInstaller解鎖了程式碼分發、部署和維護的新境界。從單一腳本到強大應用程式以往,Python腳本只存在於特定的Python環境中。分發這樣的腳本需要使用者安裝Python和必要的函式庫,這是一個費時且繁瑣的過程。 PyInstaller引入了打包的概念,將Python程式碼與所有必要的依賴項組合成一個單獨的執行檔。代碼打包的藝術PyInstaller的工

Python 程式碼變身獨立應用:PyInstaller 的煉金術 Python 程式碼變身獨立應用:PyInstaller 的煉金術 Feb 19, 2024 pm 01:27 PM

PyInstaller是一個開源程式庫,允許開發者將python程式碼編譯為平台無關的自包含可執行檔(.exe或.app)。它透過將Python程式碼、依賴項和支援檔案打包在一起來實現這一目標,從而創建獨立應用程序,無需安裝Python解釋器即可運行。 PyInstaller的優點在於它消除了對Python環境的依賴性,使應用程式可以輕鬆分發和部署給最終用戶。它還提供了建構器模式,使用戶可以自訂應用程式的設定、圖示、資源檔案和環境變數。使用PyInstaller打包Python程式碼安裝PyInstal

See all articles