当前位置: 首页 > article >正文

002 用户数据的构造和渲染

构造用户数据

有了基础代码以后, 我的想法就是逐步丰富代码, 用案例去驱动, 比如说, 现在想要实现用户管理的功能, 那么我们先构造一下用户的数据.

这个比较简单, 我们用js代码来构造一下:

import {onMounted, ref} from "vue";

let users = ref([])

onMounted(() => {
  for (let i = 0; i < 8; i++) {
    users.value.push({
      id: i,
      name: `张三${i}`,
      age: 18 + i,
    })
  }
})

这里的数据先不要构造太多了, 因为太多了不好看, 现在还没有分页功能, 太多了装不下.

我喜欢一点一点的来.

我的代码是写在App.vue里面的, 此时App.vue里面的代码如下:

<script setup>
import {onMounted, ref} from "vue";

let users = ref([])

onMounted(() => {
  for (let i = 0; i < 8; i++) {
    users.value.push({
      id: i,
      name: `张三${i}`,
      age: 18 + i,
    })
  }
})
</script>
<template>
  <div>zdpui</div>
</template>

渲染用户数据

有了用户数据以后, 就要想着怎么渲染了.

渲染肯定是用表格, 加上简单的vue的语法, 我们可以通过下面的代码来渲染用户数据.

<template>
  <div>
    <table>
      <thead>
      <tr>
        <th>序号</th>
        <th>姓名</th>
        <th>年龄</th>
      </tr>
      </thead>
      <tbody>
      <tr v-for="(user, index) in users" :key="user.id">
        <td>{{ index + 1 }}</td>
        <td>{{ user.name }}</td>
        <td>{{ user.age }}</td>
      </tr>
      </tbody>
    </table>
  </div>
</template>

此时页面的渲染效果如下:

在这里插入图片描述

在这段代码中, 我并没有用什么高级的东西, 都是一些HTML的基础语法, table表示表格, thead表示表头, tbody表示表内容.

现在表格还比较丑,我们可以追加一些样式.

此时, App.vue 完整代码如下:

<script setup>
import {onMounted, ref} from "vue";

let users = ref([])

onMounted(() => {
  for (let i = 0; i < 8; i++) {
    users.value.push({
      id: i,
      name: `张三${i}`,
      age: 18 + i,
    })
  }
})
</script>
<template>
  <div>
    <table>
      <thead>
      <tr>
        <th>序号</th>
        <th>姓名</th>
        <th>年龄</th>
      </tr>
      </thead>
      <tbody>
      <tr v-for="(user, index) in users" :key="user.id">
        <td>{{ index + 1 }}</td>
        <td>{{ user.name }}</td>
        <td>{{ user.age }}</td>
      </tr>
      </tbody>
    </table>
  </div>
</template>

美化表格样式

为了让表格更好看, 我添加了下面的样式:

pass

这里在准备动手写样式的时候, 我决定先让kimi帮我美化一下, 所以我问了kimi.

在这里插入图片描述

kimi给了我一些代码, 我决定去试试:

table {
  border-collapse: collapse;
  width: 100%;
  margin: 20px 0;
  font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
  border-radius: 8px;
  box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
}

thead {
  background: linear-gradient(to right, #00c6ff, #0072ff);
  color: white;
}

th {
  text-transform: uppercase;
  letter-spacing: 1px;
  padding: 12px;
  text-align: left;
}

tbody tr:nth-child(even) {
  background-color: #f3f4f6;
}

tbody tr:hover {
  background-color: #e5e7eb;
  transition: background-color 0.3s;
}

tbody td {
  padding: 12px;
  text-align: left;
  border-top: 1px solid #e5e7eb;
}

th, td {
  vertical-align: middle;
}

我试了一下kimi给的这个样式, 感觉还可以, 给大家也看看:

在这里插入图片描述

暂时对表格页面没有特别大的想法, 所以我决定先用这个.

此时, App.vue 代码如下:

<script setup>
import {onMounted, ref} from "vue";

let users = ref([])

onMounted(() => {
  for (let i = 0; i < 8; i++) {
    users.value.push({
      id: i,
      name: `张三${i}`,
      age: 18 + i,
    })
  }
})
</script>
<template>
  <div>
    <table>
      <thead>
      <tr>
        <th>序号</th>
        <th>姓名</th>
        <th>年龄</th>
      </tr>
      </thead>
      <tbody>
      <tr v-for="(user, index) in users" :key="user.id">
        <td>{{ index + 1 }}</td>
        <td>{{ user.name }}</td>
        <td>{{ user.age }}</td>
      </tr>
      </tbody>
    </table>
  </div>
</template>

<style scoped>
table {
  border-collapse: collapse;
  width: 100%;
  margin: 20px 0;
  font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
  border-radius: 8px;
  box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
}

thead {
  background: linear-gradient(to right, #00c6ff, #0072ff);
  color: white;
}

th {
  text-transform: uppercase;
  letter-spacing: 1px;
  padding: 12px;
  text-align: left;
}

tbody tr:nth-child(even) {
  background-color: #f3f4f6;
}

tbody tr:hover {
  background-color: #e5e7eb;
  transition: background-color 0.3s;
}

tbody td {
  padding: 12px;
  text-align: left;
  border-top: 1px solid #e5e7eb;
}

th, td {
  vertical-align: middle;
}
</style>

总结

虽然目前已经实现了表格的基本渲染, 也有了一定的样式, 但是还有很多的事情要做.

比如怎么封装成组件?

怎么抽离样式?

还有很多很多的问题要解决.

一个一个的解决问题, 慢慢的打磨.


http://www.kler.cn/a/460389.html

相关文章:

  • 硬件工程师面试题 21-30
  • ASP.NET CORE 依赖注入的三种方式,分别是什么,使用场景
  • 网工日记:FTP两种工作模式的区别
  • 活动预告 |【Part2】Microsoft 安全在线技术公开课:安全性、合规性和身份基础知识
  • akamai3.0反爬教程逆向分析9个视频汇总
  • 如何查看下载到本地的大模型的具体大小?占了多少存储空间:Llama-3.1-8B下载到本地大概15GB
  • 从0到机器视觉工程师(一):机器视觉工业相机总结
  • python23-常用的第三方库01:request模块-爬虫
  • UE(虚幻)学习(三) UnrealSharp插件中调用非托管DLL
  • 前端通过函数方法触发文件上传、限制文件类型、限制文件大小、上传的进度
  • 仿快团团商品详情页底部按钮头像轮播(uniapp)
  • XQR5VFX130-1CN1752V,,具有高度的可编程性和灵活性的FPGA中文技术资料
  • 摄像头监视脚本
  • Wonder Dynamics技术浅析(一)
  • [算法] [leetcode-1137] 第 N 个泰波那契数
  • 【自动驾驶汽车通讯协议】RGMII通信技术详解
  • 自学记录:鸿蒙5使用ArkTS和ArkUI实现Live View功能
  • 【经管】上市公司供应链风险数据测算数据集+dofile(2008-2023年)
  • gitlab的搭建及使用
  • udp分片报文发送和接收
  • 经典排序算法:冒泡排序与选择排序
  • List排序的方法
  • JVM和异常
  • 【华为OD-E卷 - 机房布局 100分(python、java、c++、js、c)】
  • Edge如何获得纯净的启动界面
  • XIAO Esp32 S3 轻松发送 HTTP 请求,打造智能物联网应用