vuetify+axios请求json数据实现一个表格功能
共 2616字,需浏览 6分钟
· 2020-12-26
写在前面的话,公司工作很久了,一直都没有改过自己的技术栈,才觉得慢慢的落后于潮流,也知道自己的技术栈很老旧,想过要重构项目,但是项目周期时间一直不许,学习vue只能在下班的时间里面,这两年也断断续续的用过一些框架,但最后还是选中了vuetify。
vuetify
推荐指数:star:28.9k
适用:移动PC多端支持
GitHub地址:https://github.com/vuetifyjs/vuetify
官网地址:https://vuetifyjs.com/zh-Hans/
来看看官网是怎么介绍的吧:这是世界上最流行的 Vue.js 框架,用于构建功能丰富、快速的应用程序。
Vuetify确实是一款非常精致的UI框架,它提供了很多常用的组件,依靠Material Design的设计优势,让你无需编写一行css代码就可以得到非常美观的界面功能。响应式做的不错,移动PC多端支持,配置灵活,组件也挺多的,足够现代,功能全面vuetify,一直用一直爽,强烈推荐vuetify。
步骤:
1:以管理员的身份打开cmd,进入d盘
使用 Vue CLI 创建一个新的 Vue.js 项目
vue create vuetify-app
![](https://filescdn.proginn.com/067277c455324660d90acae4e0b3b573/cf3dfa107785a93e304f6834f3a3e0f7.webp)
完成以后,可以看到D盘出现的初始化的项目了
![](https://filescdn.proginn.com/f466755a186055bdddbc05f954fc128d/c0ab1639e24815658a028c06a6de101b.webp)
2:根据提示
运行
cd vuetify-app
npm run serve
![](https://filescdn.proginn.com/d02516ce26b27a2269f5e665b58b2d33/ddc25ad62889d30318ad00a4623bab4a.webp)
启动成功
![](https://filescdn.proginn.com/c027cbcf373081a31615867ed634317f/bb7b56ca998cf19ece991cd175c5579a.webp)
打开浏览器,输入地址,可以访问了
![](https://filescdn.proginn.com/d906161715f4190a7f7361befdd7aaea/0182de2b293fa0dac5cc800b2404a169.webp)
3:将项目导入编辑器
在编辑器里面打开终端
vue add vuetify
![](https://filescdn.proginn.com/bb5875b8811ac8660ebbd23e67702cc2/8149ccec616c8262e0411b40d7aefb25.webp)
一路回车,以下就是安装完成了
![](https://filescdn.proginn.com/75f1f846745a1150486e0876953f32b9/9d4f5090f9951743e3afbac2997eb74d.webp)
4:根据文档,写一个表格分页
:headers="headers"
:items="desserts"
:items-per-page="5"
class="elevation-1"
>
![](https://filescdn.proginn.com/9106399c3a4d8e904696697baff7d443/86fc968915de64dc4179341425fdae4e.webp)
![](https://filescdn.proginn.com/0281bce6505250f67b3391106357a95c/241c1706a9b67babe71c9f6abf6b890d.webp)
5:上面是一个静态的表格,怎么写成一个请求json数据,然后渲染数据的格式呢,这里就要用到常用的axios请求方法了。
安装axios
npm install axios --save
![](https://filescdn.proginn.com/efcb3fb37fc13c848255111059bb735a/3681607ba35b1528b39f83462ae1552d.webp)
在public底下新建一个static静态文件夹,存放json数据
,准备json数据数据格式如下:
![](https://filescdn.proginn.com/c8ccdaf8b0f24c443e5ce94a8ac45471/36cb7bc6749ce8b52d5c8318d70f95c6.webp)
[{
"name": "22物联",
"calories": 1,
"fat": "DDDDD",
"carbs": 1,
"protein": "DDDD",
"iron": "DDDDD"
},{
"name": "23物联",
"calories": 1,
"fat": "DDDDD",
"carbs": 1,
"protein": "DDDD",
"iron": "DDDDD"
},{
"name": "24物联",
"calories": 1,
"fat": "DDDDD",
"carbs": 1,
"protein": "DDDD",
"iron": "DDDDD"
},{
"name": "25物联",
"calories": 1,
"fat": "DDDDD",
"carbs": 1,
"protein": "DDDD",
"iron": "DDDDD"
},{
"name": "26物联",
"calories": 1,
"fat": "DDDDD",
"carbs": 1,
"protein": "DDDD",
"iron": "DDDDD"
},{
"name": "27物联",
"calories": 1,
"fat": "DDDDD",
"carbs": 1,
"protein": "DDDD",
"iron": "DDDDD"
},{
"name": "28物联",
"calories": 1,
"fat": "DDDDD",
"carbs": 1,
"protein": "DDDD",
"iron": "DDDDD"
},{
"name": "29物联",
"calories": 1,
"fat": "DDDDD",
"carbs": 1,
"protein": "DDDD",
"iron": "DDDDD"
}]
代码示例
<template>
<v-data-table :headers="headers" :items="desserts" :items-per-page="5" class="elevation-1">v-data-table>
template>
<script>
import axios from "axios";
export default {
data() {
return {
headers: [
{
text: "Dessert (100g serving)",
align: "start",
sortable: false,
value: "name"
},
{ text: "Calories", value: "calories" },
{ text: "Fat (g)", value: "fat" },
{ text: "Carbs (g)", value: "carbs" },
{ text: "Protein (g)", value: "protein" },
{ text: "Iron (%)", value: "iron" }
],
desserts: []
};
},
mounted() {
this.getData();
},
methods: {
getData() {
axios.get("/static/mock.json").then(
response => {
console.log(response.data);
this.desserts = response.data;
},
error => {
console.log(error);
}
);
}
}
};
script>
效果如下
![](https://filescdn.proginn.com/3d29e7833571f8780a2a5fbe0a647987/400160bceaf93e3033b7c50c81d5b347.webp)
OK,完成。