在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字符串,不利于版本控制
上面是我整理给大家的,希望今后会对大家有帮助。
相关文章:
在jQuery中实现碰到边缘反弹的动画效果该如何做?
在vue cli webpack中如何使用sass(详细教程)
在jQuery中如何改变P标签文本值

  • Django+Vue闈欐佽祫婧闂
    绛旓細涔嬪悗灏辫兘鐩存帴瀵 blogfro 杩涜寮鍙戜簡锛屽紑鍙戝畬鎴愬悗浣跨敤 npm run build 锛 鐒跺悗鐩存帴寮鍚 django 鏈嶅姟鍣ㄥ氨鑳借繘琛屾祴璇曘傛渶鍚鎵撳寘涓婄嚎鐨勬椂鍊欏皢dist涓嬬殑鍐呭澶嶅埗鍒板埌 STATIC_ROOT 涓嬶紝鐒跺悗 python manage.py collectstatic 锛堜富瑕佹槸鏀堕泦 admin 锛鐨勮祫婧銆傚叾瀹為棶棰樹笉鏄畬鍏ㄨВ鍐筹紝浣嗚繖鏄洜涓 vue + ...
  • vue_cli3涓璦ssets鍜宲ublic鏀剧疆鏂囦欢鐨勫尯鍒
    绛旓細assets鍜宲ublic閮芥槸鏀剧疆闈欐鏂囦欢鐨勫湴鏂癸紝public鏀惧紩鍏ュ埆浜虹殑鏂囦欢锛屽熀鏈笉浼氬姩鐨勬枃浠 濡傦細iconfont銆佸閮ㄧ涓夋柟鏂囦欢 瑙i噴锛歱ublic/ 鐩綍涓嬬殑鏂囦欢骞朵笉浼氳Webpack澶勭悊锛氬畠浠細鐩存帴琚鍒跺埌鏈缁鐨勬墦鍖鐩綍锛堥粯璁ゆ槸dist/static锛変笅銆傚繀椤讳娇鐢ㄧ粷瀵硅矾寰勫紩鐢ㄨ繖浜涙枃浠讹紝杩欎釜鍙栧喅浜庝綘vue.config.js涓璸ublicPath鐨勯厤缃紝...
  • vue闈欐佽祫婧璺緞璁剧疆
    绛旓細vue鎵撳寘涓婄嚎鍚庣粡甯镐細纰板埌闈欐佽祫婧璺緞鎵句笉鍒扮殑闂銆傚父瑙侀棶棰樺強瑙e喅鏂瑰紡濡備笅锛氳В鍐虫柟寮忥細 鎵撳紑config/index.js锛屽皢鍏朵腑鐨刟ssetsPubicPath鐨勫兼敼涓衡./鈥欒В鍐虫柟寮 鏇存敼鍥剧墖鏂囦欢鐨勮矾寰勬敼涓虹粷瀵硅矾寰勬垨鑰呯敓浜х幆澧冪殑鐩稿璺緞
  • vue闈欐佽祫婧鏀緎rc澶栭潰鎬庝箞鎷
    绛旓細浣跨敤缁濆璺緞銆傛牴鎹vue瀹樻柟鏂囨。锛宻rc瀵瑰簲鐨勬槸涓彉閲忥紝鍙湁鍦ㄨ繍琛屾湡鎵嶄細琚В鏋,鍥犳浣跨敤鍐冲璺緞浠ヨ皟鐢璧勬簮銆Vue鏄竴濂楃敤浜庢瀯寤虹敤鎴风晫闈㈢殑娓愯繘寮忔鏋躲備笌鍏跺畠澶у瀷妗嗘灦涓嶅悓鐨勬槸锛孷ue琚璁′负鍙互鑷簳鍚戜笂閫愬眰搴旂敤銆
  • vue 椤圭洰涓殑 src 鐩綍鏄濡備綍鎼缓鐨?
    绛旓細鍦 Vue 椤圭洰涓紝src 鐩綍鏄瓨鏀炬簮浠g爜鐨勭洰褰曘備竴鑸潵璇达紝src 鐩綍涓嬩細鏈変竴涓 public 鏂囦欢澶癸紝鐢ㄤ簬瀛樻斁闈欐佽祫婧愶紝濡傚浘鐗囥佹牱寮忕瓑銆傛澶栵紝src 鐩綍涓嬭繕浼氭湁涓涓 assets 鏂囦欢澶癸紝鐢ㄤ簬瀛樻斁缂栬瘧鍚鐨勯潤鎬佽祫婧銆傚鏋滀綘鐨勯」鐩渶瑕佷娇鐢ㄧ涓夋柟搴撴垨鑰呮彃浠讹紝閭d箞杩欎簺搴撴垨鎻掍欢涔熶細琚斁缃湪 src 鐩綍涓嬬殑涓涓瓙鐩綍...
  • idea涓濡備綍淇敼鎵撳寘鍚鐨剉ue
    绛旓細鎵撳紑鏂囦欢閰嶇疆锛屽悗鍙版帶鍒舵墽琛屻俰dea涓慨鏀鎵撳寘鍚vue鐨绗1姝ュ氨鏄紝棣栧厛闇瑕佸湪package.json鏂囦欢涓厤缃紝鍏舵鍦ㄥ悗鍙版帶鍒跺彴鎵ц鎵撳寘鍛戒护锛岀劧鍚庢墦寮椤圭洰锛岄夋嫨鐩稿閫斿緞鑾峰緱闈欐佽祫婧锛屾渶鍚庨夋嫨闇瑕佷慨鏀圭殑鍐呭涔嬪悗鐐瑰嚮鎵撳寘杩涜姝e父杩愯銆侷dea鎸囩殑鏄蒋浠跺紑鍙戣呭拰鍥㈤槦鐨勫繀澶囧伐鍏凤紝鍖呮嫭琛屼笟涓澶寸殑JavaIDE浠ュ強缂栫▼璇█銆
  • vue鎬庝箞鍜屽悗绔鎺
    绛旓細4銆佷綘閮借浜嗘槸鍓嶅悗绔垎绂伙紝灏变笉闇瑕佹妸vue宓屽php浠g爜閲屽墠鍚庣鐢ㄧ函鎺ュ彛浜ゆ崲鏁版嵁锛屾壘鍚庣鍚屼簨瀹氫箟濂絩estful鎺ュ彛锛屾竻妤氳繑鍥炵殑鏁版嵁缁撴瀯锛屾帴涓嬫潵鍓嶇杩欏潡浣犲氨鍙互鑷繁mock鏁版嵁杩涜寮鍙戜簡鑷充簬濡備綍鎼缓鐜锛岀湅浣犱篃鏄釜鏂版墜锛岃繕鏄洿鎺ャ5銆乿ue 鍙互鎵撳寘鐢熸垚闈欐佺殑 璧勬簮鏂囦欢html锛宑ss锛宩s 锛宲ng 绛夛紝鍙互鐩存帴鏀惧埌...
  • vue-element-admin鎵撳寘鍚庣綉椤电┖鐧借В鍐虫柟娉
    绛旓細浣跨敤 鍛戒护杩涜鎵撳寘 浼氬嚭鐜拌繖鏍风殑鎯呭喌 鐢熸垚浜嗕竴涓闈欐佺殑鏂囦欢澶,鎵撳紑index.html鐨勬椂鍊 浼氬嚭鐜伴〉闈㈢┖鐧界殑闂 鎵撳紑F12鏌ョ湅涓涓嬭繖鏄负鍟 浼氬彂鐜拌繖浜涙枃浠剁殑璺緞璁块棶涓嶅埌 鍦ㄦ簮鐮佹枃浠朵腑鎵撳紑 vue.config.js 灏 publicPath: '/' 鏀规垚 publicPath: 鈥./鈥欑劧鍚庝娇鐢 npm run build:prod 閲嶆柊鎵撳寘 鎵撳紑娴忚鍣...
  • vue閰嶇疆鏂囦欢涓鎵撳寘
    绛旓細/static/js/config'Vue.prototype.baseUrl = ApiUrl;this.$http.get(this.baseUrl+'/api/v1/apiname').then((res)=>{ }).catch((err)=>{ })dist鏂囦欢涓鎵撳寘鐨鏂囦欢锛宻tatic/js/config.js涓烘帴鍙g殑閰嶇疆鏂囦欢 娉細姝ゆ柟娉曠殑鍘熺悊鏄vue涓嶄細灏static涓殑鏂囦欢杩涜鎵撳寘锛宻tatic涓殑鏂囦欢灞炰簬闈欐佽祫婧 ...
  • 澶т浆vue鎵撳寘鐨勬椂鍊欐湁浜涘浘鐗囨病鏈夎浆鎴恇ase64鏄鎬庝箞鍥炰簨鍛
    绛旓細棣栧厛base64鐨勭洰鐨勪富瑕佹槸锛屼负浜嗗噺灏慼ttp璇锋眰锛岃浆涓篵ase64浠ュ悗灏忓浘鐗囧彲浠ヨ窡js鍚屾椂琚姞杞藉埌娴忚鍣紝鑰屼笉闇瑕佸娆″鏈嶅姟鍣ㄥ彂鍑哄浘鐗璧勬簮璇锋眰 鍏舵锛屽浘鐗囪浆鎴恇ase64鍚庯紝鏂囦欢浣撶Н鍙樺ぇ浜嗗ぇ绾1/3宸﹀彸 鏂囦欢鐨刡ase64缂栫爜瀛樺偍鍒颁簡js鏂囦欢涓 vue-webpack妯℃澘鐨勯粯璁よ缃檺鍒朵簡杞爜鐨勬枃浠跺ぇ灏忎负10000B浠ヤ笅 闈欐鏂囦欢鐩綍涓...
  • 扩展阅读:java入门网站 ... vue网站静态化 ... mixkit免费高清视频素材 ... vue为什么要打包 ... 免费视频素材库 ... vue项目怎么打包 ... vue静态资源路径配置 ... vue项目打包后直接打开 ... vue为什么必须打包 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网