引言
图片组件的创建
1. 环境准备
首先,确保你的开发环境中已经安装了Node.js和Vue CLI。以下是在Windows系统上安装Vue CLI的步骤:
npm install -g @vue/cli
2. 创建项目
使用Vue CLI创建一个新的Vue项目:
vue create image-component
选择默认配置或手动配置项目。
3. 添加图片组件
在项目目录中,创建一个名为ImageComponent.vue
的新文件,并添加以下代码:
<template>
<div class="image-container">
<img :src="imageUrl" :alt="altText" class="image-component" />
</div>
</template>
<script>
export default {
name: 'ImageComponent',
props: {
imageUrl: {
type: String,
required: true
},
altText: {
type: String,
default: ''
}
}
}
</script>
<style scoped>
.image-container {
display: inline-block;
max-width: 100%;
}
.image-component {
width: 100%;
height: auto;
display: block;
}
</style>
图片组件的优化
1. 异步加载图片
export default {
// ...
data() {
return {
loaded: false,
imageUrl: 'path/to/image.jpg'
};
},
mounted() {
const img = new Image();
img.onload = () => {
this.loaded = true;
};
img.src = this.imageUrl;
}
}
2. 图片压缩与格式转换
methods: {
compressImage(imageUrl) {
return new Promise((resolve, reject) => {
const canvas = document.createElement('canvas');
const ctx = canvas.getContext('2d');
const img = new Image();
img.onload = () => {
canvas.width = img.width / 2;
canvas.height = img.height / 2;
ctx.drawImage(img, 0, 0, canvas.width, canvas.height);
canvas.toBlob(blob => {
resolve(URL.createObjectURL(blob));
}, 'image/jpeg', 0.7);
};
img.onerror = reject;
img.src = imageUrl;
});
}
}
3. 使用懒加载
<template>
<div class="image-container">
<img v-lazy="imageUrl" :alt="altText" class="image-component" />
</div>
</template>
<script>
import VueLazyload from 'vue-lazyload';
export default {
// ...
mounted() {
Vue.use(VueLazyload);
}
}
</script>