因为require 是webpack的写法,require 是 node 中的一个方法,他的作用是 “用于引入模块、 JSON、或本地文件”。 如果我们使用 require 来引入一个图片文件的话,那么 require 返回的就是用于引入的图片(npm 运行之后图片的编译路径)。 而如果使用字符串的话,那么则是一个 string 类型的固定字符串路径。vue 项目通过 webpack 的 devServer 运行之后,默认的 vue-cli 配置下,图片会被打包成 name.hash 的图片名,在这种情况下,如果我们使用固定的字符串路径则无法找到该图片,所以需要使用 require 方法来返回图片的编译路径。
<img :src="src" />
const src= require('./path.png')
如果项目是用vite搭建的,就需要使用new URL(url, import.meta.url).href的格式引入图片,import.meta.url 是一个 ESM 的原生功能,会暴露当前模块的 URL。将它与原生的 URL 构造器 组合使用,在一个 JavaScript 模块中,通过相对路径我们就能得到一个被完整解析的静态资源
<img :src="src" />
const src= new URL('./path.png', import.meta.url).href