前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >vue中v-for图片src路径错误

vue中v-for图片src路径错误

作者头像
跟着阿笨一起玩NET
发布2020-10-09 14:20:46
1.3K0
发布2020-10-09 14:20:46
举报
文章被收录于专栏:跟着阿笨一起玩NET

一、问题概述

1. html结构如下:

代码语言:javascript
复制
  
  <ul class="nav-list">
 
 
  
  <li v-for="data in navlist" :key="data.index">
 
 
  
  <div class="item">
 
 
  
  <!--{{ data.src }}-->
 
 
  
  <img :src="data.src" class="nav-img">
 
 
  
  <p class="nav-title">{{ data.title }}</p>
 
 
  
  <p class="nav-desc">{{ data.desc }}</p>
 
 
  
  </div>
 
 
  
  </li>
 
 
  
  </ul>
 
 

2. navlist数据如下:

图片存在 ../../assets/images/index/ 文件夹下

代码语言:javascript
复制
  
  navlist: [
 
 
  
  {'title': '鱼塘', 'desc': 'world', 'src': '../../assets/images/index/navlist01.png'},
 
 
  
  {'title': '鱼塘', 'desc': 'world', 'src': '../../assets/images/index/navlist01.png'},
 
 
  
  {'title': '社群', 'desc': 'world', 'src': '../../assets/images/index/navlist02.png'},
 
 
  
  {'title': '积分', 'desc': 'world', 'src': '../../assets/images/index/navlist03.png'},
 
 
  
  {'title': '活动', 'desc': 'world', 'src': '../../assets/images/index/navlist04.png'},
 
 
  
  {'title': '直播', 'desc': 'world', 'src': '../../assets/images/index/navlist05.png'},
 
 
  
  {'title': '资源', 'desc': 'world', 'src': '../../assets/images/index/navlist06.png'},
 
 
  
  {'title': '鱼友', 'desc': 'world', 'src': '../../assets/images/index/navlist07.png'},
 
 
  
  {'title': '鱼圈', 'desc': 'world', 'src': '../../assets/images/index/navlist08.png'},
 
 
  
  {'title': '会员', 'desc': 'world', 'src': '../../assets/images/index/navlist09.png'}
 
 
  
  ]
 
 

 3. 页面效果如下

图片无法显示

4. 浏览器中html解析如下

路径正确,但图片不显示

5. assets与static文件夹的区别

assets:在项目编译的过程中会被webpack处理解析为模块依赖,只支持相对路径的形式,如< img src=”./logo.png”>和background:url(./logo.png),”./logo.png”是相对资源路径,将有webpack解析为模块依赖 

static:在这个目录下文件不会被被webpack解析。他会直接被复制到最终的打包目录(默认是dist/static)下。必须使用绝对路径引用这些文件,这是通过config.js文件中的build.assetsPublic和build.assertsSubDirectory链接来确定的。任何放在static/中文件需要以绝对路径的形式引用:/static[filename]  根据webpack的特性,总的来说就是static放不会变动的文件,asserts放可能会变动的文件

二、解决方案

1. 用require()处理src路径

{'title': '鱼塘', 'desc': 'world', 'src': require('../../assets/images/index/navlist01.png')}

代码语言:javascript
复制
  
  data () {
 
 
  
   return {
 
 
  
   navlist: [
 
 
  
          {'title': '鱼塘', 'desc': 'world', 'src': require('../../assets/images/index/navlist01.png')},
 
 
  
          {'title': '鱼塘', 'desc': 'world', 'src': require('../../assets/images/index/navlist01.png')},
 
 
  
          {'title': '社群', 'desc': 'world', 'src': require('../../assets/images/index/navlist02.png')},
 
 
  
          {'title': '积分', 'desc': 'world', 'src': require('../../assets/images/index/navlist03.png')},
 
 
  
          {'title': '活动', 'desc': 'world', 'src': require('../../assets/images/index/navlist04.png')},
 
 
  
          {'title': '直播', 'desc': 'world', 'src': require('../../assets/images/index/navlist05.png')},
 
 
  
          {'title': '资源', 'desc': 'world', 'src': require('../../assets/images/index/navlist06.png')},
 
 
  
          {'title': '鱼友', 'desc': 'world', 'src': require('../../assets/images/index/navlist07.png')},
 
 
  
          {'title': '鱼圈', 'desc': 'world', 'src': require('../../assets/images/index/navlist08.png')},
 
 
  
          {'title': '会员', 'desc': 'world', 'src': require('../../assets/images/index/navlist09.png')}
 
 
  
        ]
 
 
  
      }
 
 
  
    }
 
 

2. html结构不变

代码语言:javascript
复制
  
  <ul class="nav-list">
 
 
  
   <li v-for="data in navlist" :key="data.index">
 
 
  
   <div class="item">
 
 
  
   <!--{{ data.src }}-->
 
 
  
   <img :src="data.src" class="nav-img">
 
 
  
   <p class="nav-title">{{ data.title }}</p>
 
 
  
   <p class="nav-desc">{{ data.desc }}</p>
 
 
  
   </div>
 
 
  
   </li>
 
 
  
  </ul>
 
 

3. 页面效果如下

正常显示

4. 浏览器中html解析如下

webpack打包之后src路径

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-10-03 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、问题概述
  • 二、解决方案
相关产品与服务
云直播
云直播(Cloud Streaming Services,CSS)为您提供极速、稳定、专业的云端直播处理服务,根据业务的不同直播场景需求,云直播提供了标准直播、快直播、云导播台三种服务,分别针对大规模实时观看、超低延时直播、便捷云端导播的场景,配合腾讯云视立方·直播 SDK,为您提供一站式的音视频直播解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档