vue3+vite 动态引用静态资源,动态引入assets文件夹图片的几种方式

这里我们先假设:
静态文件目录:src/assets/images/
我们的目标静态文件在: src/assets/images/home/home_bg.png

 通过require动态引入, 发现报错:require is not defind,这是因为 require 是属于 Webpack 的方法

第一种方式(适用于单个资源文件) 

import homeBg from 'src/assets/images/home/home_bg.png'

 第二种方式(适用于多个资源文件,动态传入文件路径)

 new URL() + import.meta.url

 在src目录下创建一个util文件夹,文件夹里创建一个utils.ts文件

// 获取assets静态资源
const getAssetsFile = (url: string) => {
  return new URL(`../assets/images/${url}`, import.meta.url).href;
};

export default {
  getAssetsFile,
};

 在vue文件中导入

使用方式

第三种方式(适用于多个资源文件,这种方式引入的文件必须指定到具体文件夹路径,传入的变量中只能为文件名,不能包含文件路径)

 例如在assets/images文件下还有一个home文件夹

// 获取assets静态资源
const getAssetsFile = (url: string) => {
  const path = `../assets/images/home/${url}`;
  const modules = import.meta.glob("../assets/images/home/*");
  return modules[path].default;
};

export default {
  getAssetsFile,
};

如果是背景图片引入的方式(一定要使用相对路径)

.bg-box{
  background-image: url('../../assets/images/bg.png');
}

你可能感兴趣的:(vue,vite,前端,前端,开发语言,vue.js,typescript)