Vue3+vite 处理静态资源,解决服务器不显示动态循环img问题

注意:

vue2+webpack中,通常使用require来动态渲染静态资源。但在vue3+vite中,不支持require语法,因此使用require会报undefined,所以官方推荐使用import来动态渲染静态资源。

实现方式动态渲染静态资源

vue2+webpack

使用require引入静态资源 require('xxxx' + 变量)

javascript 复制代码
  		<div
            :class="['tag-item', currentSystem == item.code ? 'activeTag' : '']"
            v-for="(item, index) in schoolTagsList"
            :key="index"
            @click="getCurrentTypeSchoolList(item)"
          >
            <img class="tag-icon" :src="require(`../../assets/img/${item.code}.png`)" alt="" /> 
            {{ item.value}}
          </div>

vue3+vite

使用 new URL(url, import.meta.url)

vite官网静态资源处理 new URL(url, import.meta.url)

import.meta.url : ESM 的原生功能,会暴露当前模块的 URL

与原生的 URL 构造器 组合使用,在一个 JavaScript 模块中,通过相对路径我们就能得到一个被完整解析的静态资源 URL

注意哈

注意这个URL 字符串必须是静态的,这样才能分析

否则代码将被原样保留,因而在 build.target 不支持 import.meta.url 时会导致运行时错误

javascript 复制代码
 function test(name) {
  return new URL(`../${name}.png`, import.meta.url).href
}
相关推荐
_codeOH11 小时前
Vue 3 vs React 19:框架还在卷,核心原理就这些
前端·vue.js
英勇无比的消炎药12 小时前
新手必看玩转TinyRobot一定要避开这些坑
前端·vue.js
英勇无比的消炎药12 小时前
别再盲目混用AI组件库和传统组件库差距原来这么大
前端·vue.js
英勇无比的消炎药14 小时前
前端提效神器全新AI组件库TinyRobot改写日常开发模式
前端·vue.js
英勇无比的消炎药14 小时前
前端提效神器TinyRobot
前端·vue.js
CDwenhuohuo14 小时前
uni 背景色渐变 全屏
前端·javascript·vue.js
爱怪笑的小杰杰14 小时前
Vue 项目交付第三方开发,如何隐藏核心 JS 源码?
前端·javascript·vue.js
小二·14 小时前
Vue 3 组合式 API 进阶实战
前端·javascript·vue.js
rising start16 小时前
九、vue3 组件通信:全场景详解
前端·vue.js·typescript
编程技术手记16 小时前
Vue Scoped CSS 与动态创建 DOM 的兼容性问题
前端·css·vue.js