个人主页卡片组件是一个可复用的 Vue.js 组件,用于在社交媒体、个人博客或其他平台上展示个人信息、社交统计数据和动态。它可以帮助用户快速创建和自定义他们的个人主页,并以简洁明了的方式展示他们的个人资料。
该组件提供以下基本功能:
1. 初始化数据
首先,在 <script>
标签中使用 ref
API 初始化一个包含个人信息和动态数据的 posts
数组:
import { ref } from "vue";
const posts = ref([
// ... 个人动态数据
]);
2. 构建组件模板
组件模板定义了组件的结构和布局。它使用 HTML 和 CSS 样式来构建个人主页卡片的各个部分:
<template>
<div class="bg-gray-100">
<!-- 个人资料部分 -->
<div class="flex justify-between items-center border-b border-gray-200 px-4 py-2">
<!-- 头像和个人信息 -->
<div class="flex items-center">
<img class="w-10 h-10 rounded-full" :src="user.avatar" alt="avatar" />
<div class="ml-4">
<p class="text-lg font-semibold">{{ user.name }}</p>
<p class="text-sm text-gray-500">{{ user.jobTitle }}</p>
</div>
</div>
<!-- 关注按钮 -->
<div>
<button class="text-sm font-semibold text-blue-500">Follow</button>
</div>
</div>
<!-- 社交统计数据部分 -->
<div class="border-b border-gray-200 px-4 py-2">
<ul class="flex items-center">
<li class="mr-4">
<a class="text-sm font-semibold text-gray-500" href="#">{{ user.posts }} Posts</a>
</li>
<li class="mr-4">
<a class="text-sm font-semibold text-gray-500" href="#"
>{{ user.followers }} Followers</a
>
</li>
<li>
<a class="text-sm font-semibold text-gray-500" href="#"
>{{ user.following }} Following</a
>
</li>
</ul>
</div>
<!-- 导航链接部分 -->
<div class="px-4 py-2">
<ul class="flex items-center">
<li class="mr-4">
<a class="text-sm font-semibold text-gray-500" href="#">Posts</a>
</li>
<li class="mr-4">
<a class="text-sm font-semibold text-gray-500" href="#">Likes</a>
</li>
<li>
<a class="text-sm font-semibold text-gray-500" href="#"
>Collections</a
>
</li>
</ul>
</div>
<!-- 动态部分 -->
<div class="border-b border-gray-200 px-4 py-2">
<p class="text-sm font-semibold text-gray-500">Feed</p>
</div>
<div class="px-4 py-2">
<div class="grid grid-cols-3 gap-4">
<!-- 动态卡片 -->
<div v-for="post in posts" :key="post.id" class="bg-white rounded-lg shadow-sm">
<img class="w-full h-48 object-cover" :src="post.image" alt="image" />
<div class="p-4">
<p class="text-sm font-semibold text-gray-500">{{ post.caption }}</p>
<div class="flex items-center mt-4">
<img class="w-10 h-10 rounded-full" :src="post.user.avatar" alt="avatar" />
<div class="ml-4">
<p class="text-sm font-semibold">{{ post.user.name }}</p>
<p class="text-sm text-gray-500">{{ post.date }}</p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</template>
3. 实现动态列表
动态列表使用 v-for
指令遍历 posts
数组并为每个动态创建了一个卡片。每个卡片包含图像、标题、发布日期和发布者的信息。
<div class="grid grid-cols-3 gap-4">
<div v-for="post in posts" :key="post.id" class="bg-white rounded-lg shadow-sm">
<!-- ... 动态卡片内容 -->
</div>
</div>
开发这个个人主页卡片组件让我深入了解了 Vue.js 的基本概念和组件化开发实践。它提供了一个可复用且可定制的解决方案,可以轻松集成到不同的应用程序中。
经验与收获:
未来拓展与优化: