引言

图片组件的创建

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>

总结