vue項(xiàng)目如何配置public靜態(tài)資源路徑訪問
vue項(xiàng)目配置public靜態(tài)資源路徑訪問
一般的vue項(xiàng)目都有一個(gè)初始index.html,而其他js、css都是這個(gè)html引入的,默認(rèn)情況下使用絕對(duì)路徑引入,如/js/app.js
這樣就有一個(gè)問題,靜態(tài)資源經(jīng)常要部署在不同的上下文路徑下,如nginx將vue靜態(tài)資源部署在/static下
此時(shí)使用絕對(duì)路徑訪問不到index.html引入的js、css等,而相對(duì)路徑是不變的
解決
vue.config.js
module.exports = {
publicPath: ''
???????}配置publicPath即可,而這個(gè)的默認(rèn)值是'/'
vue打包后靜態(tài)資源路徑錯(cuò)誤的問題
vue項(xiàng)目完成的最后一步就是打包部署上線,但是打包部署的過程往往不是那么一帆風(fēng)順的,現(xiàn)將遇到問題和解決方案記錄如下。
圖片路徑問題
起因:
頁(yè)面中引入資源的方式往往有如下幾種
- * HTML標(biāo)簽中直接引入圖片, 如
<img src="../assets/images/index.png"> - * JS代碼中定義資源路徑屬性,如
src: require('../assets/images/index.png') - * CSS代碼中定義資源為背景圖片,如
background-image: url("../assets/images/indexpng")
上述三種資源加載方式還是有所區(qū)別的。
前兩種無(wú)論圖片大小,都會(huì)使用url-loader加載器將其轉(zhuǎn)化為base64編碼的靜態(tài)資源,而第三種方式則會(huì)根據(jù)webpack中配置的limit參數(shù),動(dòng)態(tài)選擇符合大小要求的圖片進(jìn)行轉(zhuǎn)碼,此時(shí)則會(huì)導(dǎo)致不符合大小選擇的圖
片加載失敗,同時(shí)報(bào)出如下錯(cuò)誤。
localhost:8080/dist/static/css/static/img/index.254207f.png
解決:
1.保證打包資源路徑可用,首先要做的是配置build.js執(zhí)行時(shí)的資源參數(shù),打開config目錄下的index.js
看代碼:
index: path.resolve(__dirname, '../dist/index.html'),
assetsRoot: path.resolve(__dirname, '../dist'),
assetsSubDirectory: 'static',
assetsPublicPath: './', // 修改為'./'滿足資源相對(duì)路徑
2.保證資源轉(zhuǎn)碼條件符合。這塊主要涉及到加載用到的加載器url-loader, 需要保證其配置可執(zhí)行。打開build目錄下的
webpack.base.conf.js
看代碼:
{
test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
loader: 'url-loader',
options: {
limit: 10000, // 該限制為小于10KB的圖片,系統(tǒng)默認(rèn)轉(zhuǎn)碼為base64
name: utils.assetsPath('img/[name].[hash:7].[ext]')
}
},
依賴資源路徑問題(字體、圖標(biāo))
起因:
系統(tǒng)采用vue + elementUI,但是發(fā)現(xiàn)打包之后的字體文件和圖標(biāo)都不能正常顯示,報(bào)錯(cuò)如下:

解決:
打開build目錄下utils.js,添加路徑配置 publicPath: '../../',
看代碼:
// Extract CSS when that option is specified
// (which is the case during production build)
if (options.extract) {
return ExtractTextPlugin.extract({
use: loaders,
fallback: 'vue-style-loader',
publicPath: '../../' // 解決element UI打包后字體文件丟失
})
} else {
return ['vue-style-loader'].concat(loaders)
}
}
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
使用Vue后如何針對(duì)搜索引擎做SEO優(yōu)化
本文介紹了Vue.js在SEO優(yōu)化方面的挑戰(zhàn),并提供了一些方法來(lái)解決這些問題,包括使用服務(wù)器端渲染、預(yù)渲染和使用VueRouter的History模式來(lái)生成靜態(tài)HTML頁(yè)面,以及添加meta信息和內(nèi)部鏈接來(lái)提高搜索引擎的索引和排名2025-02-02
Vue.js中的extend綁定節(jié)點(diǎn)并顯示的方法
在本篇內(nèi)容里小編給大家整理了關(guān)于Vue.js中的extend綁定節(jié)點(diǎn)并顯示的方法以及相關(guān)知識(shí)點(diǎn),需要的朋友們學(xué)習(xí)下。2019-06-06
vue遞歸組件實(shí)現(xiàn)樹形結(jié)構(gòu)
這篇文章主要為大家詳細(xì)介紹了vue遞歸組件實(shí)現(xiàn)樹形結(jié)構(gòu),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-09-09
Element Plus實(shí)現(xiàn)Affix 固釘
本文主要介紹了Element Plus實(shí)現(xiàn)Affix 固釘,Affix組件用于將頁(yè)面元素固定在特定可視區(qū)域,文中通過示例代碼介紹的非常詳細(xì),感興趣的小伙伴們可以參考一下2021-07-07
Vue 動(dòng)態(tài)生成數(shù)據(jù)字段的實(shí)例
這篇文章主要介紹了Vue 動(dòng)態(tài)生成數(shù)據(jù)字段的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-04-04
優(yōu)化Vue項(xiàng)目編譯文件大小的方法步驟
這篇文章主要介紹了優(yōu)化Vue項(xiàng)目編譯文件大小的方法步驟,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧2019-05-05
Vue使用vm.$set()解決對(duì)象新增屬性不能響應(yīng)的問題
這篇文章主要介紹了Vue使用vm.$set()解決對(duì)象新增屬性不能響應(yīng)的問題,為了解決這個(gè)問題,Vue提供了一個(gè)特殊的方法vm.$set(object, propertyName, value),也可以使用全局的Vue.set(object, propertyName, value)方法,需要的朋友可以參考下2023-05-05
vue移動(dòng)端城市三級(jí)聯(lián)動(dòng)組件使用詳解
這篇文章主要為大家詳細(xì)介紹了vue移動(dòng)端城市三級(jí)聯(lián)動(dòng)組件的使用,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-07-07

