vue实现加载图片
Vue 中实现图片加载的方法
使用 v-bind 绑定 src 属性
在 Vue 中,可以通过 v-bind 动态绑定图片路径到 src 属性。图片路径可以存储在组件的 data 或通过 props 传递。
<template>
<img :src="imagePath" alt="示例图片">
</template>
<script>
export default {
data() {
return {
imagePath: require('@/assets/example.jpg')
}
}
}
</script>
使用 require 动态加载图片
当图片路径需要动态拼接时,可以使用 require 方法确保 Webpack 正确处理模块路径。
<template>
<img :src="getImagePath('example')" alt="动态图片">
</template>
<script>
export default {
methods: {
getImagePath(name) {
return require(`@/assets/${name}.jpg`)
}
}
}
</script>
处理图片加载状态
可以结合 v-if 和加载状态变量,实现图片加载时的占位符或错误处理。
<template>
<div>
<div v-if="isLoading">加载中...</div>
<img
v-else
:src="imagePath"
@load="handleLoad"
@error="handleError"
alt="图片"
>
<div v-if="loadError">图片加载失败</div>
</div>
</template>
<script>
export default {
data() {
return {
imagePath: '@/assets/example.jpg',
isLoading: true,
loadError: false
}
},
methods: {
handleLoad() {
this.isLoading = false
},
handleError() {
this.isLoading = false
this.loadError = true
}
}
}
</script>
使用懒加载优化性能
对于大量图片的场景,可以使用 vue-lazyload 插件实现懒加载。

安装插件:
npm install vue-lazyload
配置插件:

import VueLazyload from 'vue-lazyload'
Vue.use(VueLazyload, {
preLoad: 1.3,
error: 'error.png',
loading: 'loading.gif',
attempt: 1
})
使用方式:
<template>
<img v-lazy="imagePath" alt="懒加载图片">
</template>
使用 CDN 图片
对于存储在 CDN 上的图片,直接绑定 URL 即可。
<template>
<img :src="cdnImageUrl" alt="CDN图片">
</template>
<script>
export default {
data() {
return {
cdnImageUrl: 'https://example.com/path/to/image.jpg'
}
}
}
</script>
响应式图片处理
结合 CSS 或 picture 元素实现响应式图片。
<template>
<picture>
<source media="(min-width: 1024px)" :srcset="largeImage">
<source media="(min-width: 768px)" :srcset="mediumImage">
<img :src="smallImage" alt="响应式图片">
</picture>
</template>
<script>
export default {
data() {
return {
largeImage: require('@/assets/large.jpg'),
mediumImage: require('@/assets/medium.jpg'),
smallImage: require('@/assets/small.jpg')
}
}
}
</script>
以上方法涵盖了 Vue 中图片加载的常见场景,可根据具体需求选择适合的方式。






