“切图仔”不会调用图片还叫什么切图仔?因此汇总vue3项目中常见6种图片资源引入方式,总有一种能解决你当下难题;其中包含借助vite-plugin-vue-images来实现自动导入图片,从而不影响大家“摸鱼”时间,正所谓多学一个知识就能少写一行代码
一、常规
<img src="@/assets/record.jpg" />
二、js通过import from
# template
<img :src="imgSrc" />
# js
import imgSrc from '@/assets/painting.jpg';
三、采用vite-plugin-vue-images插件自动导入
安装插件
npm i vite-plugin-vue-images -D
配置
# vite.config.ts
import { defineConfig,loadEnv} from 'vite'
import ViteImages from 'vite-plugin-vue-images'
export default ({ mode }) => defineConfig({
plugins: [
ViteImages({
dirs: ['src/assets'], // 图像目录的相对路径
extensions: ['jpg', 'jpeg', 'png', 'svg', 'webp'], // 有效的图像扩展
customResolvers:[], // 覆盖名称->图像路径解析的默认行为
customSearchRegex: '([a-zA-Z0-9]+)', // 重写搜索要替换的变量的Regex。
}),
]
使用
自动导入图像,同级目录的文件名不能重复!命名遵循大驼峰命名方式
// src/assets/straight_man.jpg
<img :src="StraightMan" /> // 注意命名遵循大驼峰命名方式
插件将转换为
<template>
<div>
<img :src="straight_man" />
</div>
</template>
<script setup lang="ts">
import straight_manfrom '@/assets/straight_man.jpg'
</script>
四、new URL() + import.meta.url
vite官方配置文档
# template
<img :src="getAssetsFile" />
# js
function getAssetsImages(name) {
return new URL(`/src/assets/${name}`, import.meta.url).href;
}
const getAssetsFile = getAssetsImages('valentine_day.jpg');
五、import.meta.glob
使用vite的import.meta.glob或import.meta.globEager,两者的区别是前者懒加载资源,后者直接引入;不推荐,这种方式使时候引入的文件必须指定到具体文件夹路径,传入的变量中只能为文件名,不能包含文件路径,可以采用方式四替代该方案
# template
<img :src="getAssetsHomeFile('time_shuttle.jpg')" />
# js
let getAssetsHomeFile = (url: string) => {
const path = `../assets/${url}`;
const modules = import.meta.globEager('../assets/*');
console.log(modules[path])
return modules[path].default;
};
六、public静态图片资源引入
// src="" 一个斜杠就表示资源定位到public下
<img src="/images/effort.jpg" />
学习更多技能
请点击下方公众号
文章评论