首页 > 其他分享 >Vue 动态加载本地图片 404 的问题

Vue 动态加载本地图片 404 的问题

时间:2024-01-24 15:33:06浏览次数:21  
标签:shop Vue img .. 运费 404 logo png 加载

今天在 vue 文件中动态引入本地图片时发现路径没有问题但是一直 404

template 部分如下,使用 v-for 动态加载,数据存储在 setup 中的 nearbyItems 数组内

<template>
    <div class="nearby">
        <div class="title">附近店铺</div>
        <div v-for="item in nearbyItems" :key="item.id" class="nearby-item">
            <div class="left">
                <img :src="item.logo" alt="" class="shop-logo" />
            </div>
            <div class="right">
                <div class="shop-title">{{ item.title }}</div>
                <div class="tags">
                    <span v-for="(tag, index) of item.tags" :key="index" class="tag-item">{{ tag }}</span>
                </div>
                <div class="promotion">{{ item.promotion }}</div>
            </div>
        </div>
    </div>
</template>

script 部分代码如下

<script>
export default {
    name: "Nearby",
    setup(){
        const nearbyItems = [
            {
                id: 1,
                logo: "../../assets/img/shop-logo.png",
                title: "永辉超市",
                tags: ["月售一万+","起送¥0","基础运费¥5"],
                promotion: "VIP尊享满89元减4元运费券(每月3张)",
            },
            {
                id: 2,
                logo: "../../assets/img/shop-logo.png",
                title: "永辉超市",
                tags: ["月售一万+","起送¥0","基础运费¥5"],
                promotion: "VIP尊享满89元减4元运费券(每月3张)",
            },
            {
                id: 3,
                logo: "../../assets/img/shop-logo.png",
                title: "永辉超市",
                tags: ["月售一万+","起送¥0","基础运费¥5"],
                promotion: "VIP尊享满89元减4元运费券(每月3张)",
            },
            {
                id: 4,
                logo: "../../assets/img/shop-logo.png",
                title: "永辉超市",
                tags: ["月售一万+","起送¥0","基础运费¥5"],
                promotion: "VIP尊享满89元减4元运费券(每月3张)",
            },
            {
                id: 5,
                logo: "../../assets/img/shop-logo.png",
                title: "永辉超市",
                tags: ["月售一万+","起送¥0","基础运费¥5"],
                promotion: "VIP尊享满89元减4元运费券(每月3张)",
            },
            {
                id: 6,
                logo: "../../assets/img/shop-logo.png",
                title: "永辉超市",
                tags: ["月售一万+","起送¥0","基础运费¥5"],
                promotion: "VIP尊享满89元减4元运费券(每月3张)",
            },
            {
                id: 7,
                logo: "../../assets/img/shop-logo.png",
                title: "永辉超市",
                tags: ["月售一万+","起送¥0","基础运费¥5"],
                promotion: "VIP尊享满89元减4元运费券(每月3张)",
            },
        ];
        return{
            nearbyItems,
        }
    }
}
</script>

 图片并没有加载出来,查看图片的地址显示 ../../assets/img/shop-logo.png ,通过v-bind 绑定的相对路径并不会被 webpack 的 file-loader 处理,只会做简单的文本替换,

常用的解决办法:

1. 使用 import 引入图片

<img :src="src">

//使用import引入
import img from '../images/demo.png'

//data中定义变量src
data() {
  return {
    src: img 
  }
}

 

2. 使用 require 动态加载

<img :src="src">

//data中定义变量src
data() {
  return {
    src: require('../images/demo.png')
  }
}

 

3. 较小的图片可以转为 base64 格式

 

结论:静态资源可以通过两种方式进行处理:

1.在JavaScript 被导入或在 template/CSS 中通过 相对路径被引用,这类引用会被 webpack 处理

2. 放置在 public 目录下通过绝对路径被引用,这类资源会被直接 copy ,不会经过 webpack 的处理

 

标签:shop,Vue,img,..,运费,404,logo,png,加载
From: https://www.cnblogs.com/geol4/p/17984805

相关文章

  • vue print.js 批量打印功能
    批量打印 :1.用到print.js  自行安装  安装完成后 引用  importprintJSfrom'print-js';2.用到深拷贝深拷贝代码:(可以将此代码放在一个页面中,对此进行引用即可,例如:放在until文件中,引用代码 import{deepClone}from'@/utils/index')exportfunctiondeepClone......
  • vue3 axios 封装
    一、介绍二、代码三、问题 一、介绍Axios是一个基于promise的HTTP库,可以用在浏览器和node.js中。这里介绍的是在vue3中怎么封装二、代码1.基本使用1.1安装npminstallaxios1.2简单使用1.2.1局部使用importaxiosfrom'axio......
  • UniApp Vue3 动态表单
    左侧手机部分为动态表单内容,右侧为提交后获取到表单的值。页面代码:<viewstyle="margin:15px;padding:10rpx;"><tn-formlabel-position="top"ref="formRef":model="formData":rules="formRules"><tn-for......
  • vue index.html缓存解决
    Vue项目的index.html文件在部署到生产环境时,很容易受到浏览器缓存影响,导致用户无法看到最新的页面。为了解决这个问题,有几种方法:使用版本号:在构建项目时,设置打包后的文件名中包含版本号,比如index.html?v=1.0,每次更新版本号即可避免缓存问题。使用meta标签:在index.htm......
  • 记录--Vue中的$attrs你真的会用吗?
    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助先来看一个业务需求:项目经常会遇到产品经理要求你做某组件一样的功能,还要在它的基础上增加东西。如何只用少量代码高效的二次封装组件呢?例如我要做一个element-ui的input组件进行封装,以下是封装要求:对el-input......
  • Vue与微信小程序开发时的区别
    Vue与微信小程序开发时的区别一,生命周期vue:跳转页面时,钩子函数都会被重新出发一次,每次进入页面所有得钩子函数都会被触发一次小程序:onload()一个页面只会被加载一次,可以在onLoad中获取打开当前页面所调用的query参数。onShow():每次打开页面都会调用一次。二、数......
  • vue2 组件的使用
    基本使用写组件......
  • vue2项目使用jsencrypt.js实现分段加密解密
    安装:npminstall jsencrypt安装:npminstall js-base64组件:demo.vue<template></template><script>import{SM4Encrypt,SM4Decrypt}from'@/assets/des.js'importtestImportJsonfrom'@/assets/data.json'exportdefault{......
  • VUE框架CLI组件化配置Router切换路由和保持路由状态和路由组件的销毁------VUE框架
    <template><div><MyHeader></MyHeader><div><h1>省份</h1><!--在默认的情况下,我们切换组件会导致原组件被销毁--><button@click="forward()">前进</button>......
  • vue-helper 点击跳转插件 在 methods里面互相调用函数,会产生两个函数definitions ,然后
    vue-helper点击跳转插件在methods里面互相调用函数,会产生两个函数definitions,然后就回弹出框让你选择原因:换了台电脑,又从新配置下vscode"editor.gotoLocation.multipleTypeDefinitions":"goto","editor.gotoLocation.multipleReferences":"goto","editor.got......