vue中图⽚加载不出来的问题及解决
⽬录
⼀、项⽬打包完成后,打开整体空⽩
1、路径问题
原因
解决办法
2、vue-router的history模式打包后界⾯空⽩
⼆、assets⽬录下图⽚加载不出来
vue-cli的assets和static的两个⽂件的区别
古代送别诗原因
解决办法
简化本地图⽚加载的⽅法
在使⽤vue开发项⽬的时候,经常会遇到的⼀个问题就是:图⽚加载不出来。下⾯是我总结的⼏种图⽚加载不出来的情况及解决办法。
⼀、项⽬打包完成后,打开整体空⽩
1、路径问题
原因
在vue+webpack的项⽬中,项⽬打包之后的css和js的引⽤路径是绝对路径,项⽬部署之后会将静态当成根⽬录,就造成了⽂件引⽤路径的错误。笑傲江湖电影小沈阳
解决办法
通过修改配置⽂件,将绝对路径改为相对路径。
具体操作如下:
1.vue-cli 3.0版本之前
配置config下⾯的index.js中bulid模块导出的路径。因为index.html⾥边的内容都是通过script标签引⼊的,⽽你的路径不对,打开肯定是空⽩的。先看⼀下默认的路径。
build: {
env: require('./v'),
index: solve(__dirname, '../dist/index.html'),
assetsRoot: solve(__dirname, '../dist'),
assetsSubDirectory: 'static',
assetsPublicPath: '/',
productionSourceMap: true,
assetsPublicPath默认的是 ‘/' 也就是根⽬录。⽽我们的index.html和static在同⼀级⽬录下⾯。所以要改为 ‘./ '
2.vue-cli
醉驾怎么处理3.0版本之后
感恩的心演讲稿配置fig.js⽂件
// baseUrl:'./', // vue-cli3.3以下版本使⽤
publicPath:'./' // vue-cli3.3+新版本使⽤
2、vue-router的history模式打包后界⾯空⽩
src⾥边router/index.js路由配置⾥边默认模式是hash,如果你改成了history模式的话,打开也会是⼀⽚空⽩。所以改为hash或者直接把模式配置删除,让它默认的就⾏。
如果⾮要使⽤history模式的话,需要你在服务端加⼀个覆盖所有的情况的候选资源:如果URL匹配不到任何静态资源,则应该返回⼀个index.html,这个页⾯就是你app依赖页⾯。
// mode: 'history' // 默认hash
⼆、assets⽬录下图⽚加载不出来
vue-cli的assets和static的两个⽂件的区别
assets:在项⽬编译的过程中会被webpack处理解析为模块依赖,只⽀持相对路径的形式,如< img src=’./logo.png‘>和background:url(./logo.png),‘./logo.png‘是相对资源路径,将有webpack解析为模块依赖。
static:在这个⽬录下⽂件不会被webpack处理,简单就是说存放第三⽅⽂件的地⽅,不会被webpack解析。他会直接被复制到最终的打包⽬录(默认是dist/static)下。必须使⽤绝对路径引⽤这些⽂件,这是通过config.js⽂件中的
build.assetsPublic和build.assertsSubDirectory链接来确定的。任何放在static/中⽂件需要以绝对路径的形式引
⽤:/static[filename]。
根据webpack的特性,总的来说就是static放不会变动的,第三档的⽂件,asserts放可能会变动的⽂件
原因
在webpack中会将图⽚图⽚来当做模块来⽤,因为是动态加载的,所以url-loader将⽆法解析图⽚地址,然后npm run dev 或者npm run build之后导致路径没有被加⼯【被webpack解析到的路径都会被解析为/static/img/[filename].png,完整地址为localhost:8080/static/img/[filename].png】
解决办法
1.将图⽚作为模块加载进去
⽐如 images:[{src:require(‘./1.png’)},{src:require(‘./2.png’)}],这样webpack就能将其解析。
2.将图⽚放到static⽬录下
但必须写成绝对路径如images:[{src:”/static/1.png”},{src:”/static/2.png”}]这样图⽚也会显⽰出来,当然你也可以通过在fig.js定义来缩短路径的书写长度。
暗黑3哪个职业好玩简化本地图⽚加载的⽅法
1.在static⾥⾯新建⼀个imageUrls⽂件夹
2.填写imageUrls⽂件
{
'imageUrls': [
{
'image1': '/static/image/image1.png'
},
{
'image2': '/static/image/image2.png'
}
]
}
肖战粉丝为什么叫饭圈许晴
3.将imageUrls引⼊响应的vue⽂件中,解析引⽤就⾏了
import img from '../../../static/imageUrls/imageUrls.json'
export default {
data() {
return {
imageGroups: img.imageUrls
}
}
}
以上为个⼈经验,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论