动态引入
- 首先,我们直接 img src = “xxx” 就可以获取图片,但是我们需要的不是直接写在上面的 地址
- 而是从 data 数据当中获取到的地址
- 此方法有别于 从数据库中获取的数据
一、首先我们在 img 当中引用
<template>
<div>
<img :src="arr.url">
</div>
</template>
- 记住这里是 :src
- 里面的是我数据给传递过来的数据
二、设置数据 data()
<script>
export default {
data(){
return{
arr:[
{
url:require("../img/001.jpg")
},
{
url:require("../img/002.jpg")
}
//至于这里为什么会写两个 ,是因为我们通常获取的数据并不是一个,
//使用的时候通常使用 v-for 来进行遍历
//如果只按上文的 img案例,只看一个就行
]
}
},
}
</script>
- 直接给 它 传递一个路径行吗?不行,图片资源是静止的,编译后文件名为发生变化
编译前:< img src="./assets/4g.jpg" alt="">
编译后:< img src="/img/01.f0cfc21d.jpg" alt="">
常见的引入方式,路径是固定的字符串,图片会被webpack处理,名称发生变化,找不到文件
- 为什么需要使用 require() 把路径括起来?
使用require定义之后,可以动态使用,不用require,就只能写死路径(绝对路径)。不用require, :src="’…/img/image.jpg’" 会被解析为字符串。用了require,就是将图片当成模块先引进来,再绑定。
静态引入
如果做的是纯静态的网站展示,有许多的本地静态资源需要加载,里面包括本地数据和本地图片混合的好几组,建议使用 public 方式。其他情况下建议使用require方式
如果你的图片在 public 下面,就直接写 图片名 例:a.png
,如果有二级目录就直接地址 例:images/a.png
- 不需要写 public ,它会自动引用 public 里面的内容
data(){
return{
arr:[
{
url:"abc.jpg"
}
]
}
}