返回

从零上手!轻松构建 Vue3 管理后台:一步步打造存储文件服务

前端

最近,我们在使用 Vue3 编写后台管理项目。鉴于花裤衩 PanJiaChen 的 vue-element-admin 源代码仍然停留在 Vue2,我们决定大胆尝试使用 Vue3 + Vite2 + Pinia 按照源码重写。在这个过程中,我们遇到了一个常见问题:如何集成文件存储服务。

本篇文章将手把手带你构建一个 Vue3 后台管理系统,并集成文件存储服务。我们不会停留在理论层面,而是通过实际操作和代码示例,一步步带领你完成整个过程。

环境准备

在你开始之前,请确保你的系统已经满足以下要求:

  • Node.js >= 14.17.0
  • npm >= 6.14.12
  • Vue3 >= 3.2.26
  • Vite2 >= 2.9.9
  • Pinia >= 2.0.12

创建 Vue3 项目

使用 Vite 创建一个新的 Vue3 项目:

npx vite create my-vue3-admin

进入项目目录:

cd my-vue3-admin

安装 Pinia 状态管理库:

npm install pinia

集成文件存储服务

现在,我们开始集成文件存储服务。我们将使用阿里云的 OSS(对象存储服务)。

首先,你需要创建一个阿里云 OSS 账户并创建一个存储桶。有关如何创建 OSS 账户和存储桶的详细说明,请参考阿里云官方文档。

创建 OSS 账户和存储桶后,你需要获取以下信息:

  • 访问密钥 ID (Access Key ID)
  • 访问密钥密码 (Access Key Secret)
  • 存储桶名称 (Bucket Name)
  • 区域 (Region)

安装 OSS SDK

安装阿里云 OSS JavaScript SDK:

npm install @alicloud/oss

创建 OSS 服务

src/plugins 目录下创建一个名为 oss.js 的文件。在这里,我们将创建 OSS 服务:

import OSS from '@alicloud/oss';

// 创建 OSS 客户端实例
const ossClient = new OSS({
  region: '你的区域',
  accessKeyId: '你的访问密钥 ID',
  accessKeySecret: '你的访问密钥密码',
  bucket: '你的存储桶名称'
});

export default ossClient;

上传文件

src/components 目录下创建一个名为 FileUploader.vue 的组件。在这个组件中,我们将处理文件上传:

<template>
  <input type="file" @change="uploadFile">
</template>

<script>
import { ref } from 'vue';
import ossClient from '@/plugins/oss';

export default {
  setup() {
    const file = ref(null);

    const uploadFile = async (event) => {
      // 获取文件
      const file = event.target.files[0];

      // 文件名
      const fileName = file.name;

      // 上传文件
      await ossClient.put(fileName, file);
    };

    return {
      file,
      uploadFile
    };
  }
};
</script>

获取文件列表

src/pages 目录下创建一个名为 FileList.vue 的页面。在这个页面中,我们将获取文件列表:

<template>
  <ul>
    <li v-for="file in files" :key="file.name">{{ file.name }}</li>
  </ul>
</template>

<script>
import { ref, onMounted } from 'vue';
import ossClient from '@/plugins/oss';

export default {
  setup() {
    const files = ref([]);

    const getFiles = async () => {
      // 获取文件列表
      const result = await ossClient.list();

      // 更新文件列表
      files.value = result.objects;
    };

    onMounted(() => {
      getFiles();
    });

    return {
      files
    };
  }
};
</script>

运行项目

安装依赖项:

npm install

运行项目:

npm run dev

访问 http://localhost:3000,你将看到一个基本的 Vue3 后台管理系统。你可以使用文件上传组件上传文件,并在文件列表页面查看上传的文件。

结论

本篇文章演示了如何从零开始构建一个 Vue3 后台管理系统并集成文件存储服务。通过遵循本教程,你可以轻松地为你的项目添加文件存储功能。

除了文件存储服务,你还可以集成其他服务,如用户认证、数据库连接和 API 管理。通过结合这些服务,你可以构建一个功能齐全的、可扩展的后台管理系统。