写在前面的话:
自学Vue中,手写json数据,被同事看到,问我你怎么不用mock,忽然觉得自己太落后了
永远不能停止学习
啊啊啊
立马上手去学习mock,真的很方便
学习过程中还是遇到了很多问题,最终搞出来了,在此记录,防止自己忘记
——————————————————————————————————————————————————————————
一、安装mock
npm install mockjs --save-dev
二、实例(举个小栗子)
1、新建一个mock文件夹,里面创建index.js,table.js()
目录如下:
2、在main.js中引入mock
import '@/mock/index.js';
3、在mock/index.js中写如下代码:
import mockjs from 'mockjs'; import TableApi from './table.js' //引入生成数据的js const Mock = require('mockjs') // Mock函数 // 使用拦截规则拦截命中的请求
Mock.mock('api/getTableData','get',TableApi.getTableData);//此处url要与使用数据的组件中请求的url一致 //api/getTableData 为组件页面请求的url,拦截此url,使用table.js中的getTableData生成的虚拟数据
export default mockjs
4、在mock/table.js中写入如下代码
·
import Mock from 'mockjs' const code = 200 // 状态码 项目同一 export default{ getTableData () { let data = Mock.mock({ 'list|10': [{ 'userID|+1': 1, 'userName':'@cname', 'date':'@date', 'address':"@region" }] }) return { code, data } } }
5、在需要引入数据的组件内写如下代码(此处html使用了element)
<template>
<el-table :data="tableData" style="width: 100%">
<el-table-column prop="date" label="日期" width="180">
</el-table-column>
<el-table-column prop="userName" label="姓名" width="180">
</el-table-column>
<el-table-column prop="address" label="地址">
</el-table-column>
</el-table>
</template>
<script> export default { data() { return { tableData: [] } }, mounted(){ this.createTable(); }, created(){ //组件实例创建完成,此时dom还未生成
}, methods:{ createTable(){ let $this = this; // getTableData(data)
this.$axios.get('api/getTableData') //此处地址为mock/index.js文件中.mock函数中的路径 .then(response => { let $data = response.data.data; $this.tableData = $data; }) } } } </script>
6、npm run dev运行,效果如下图
TableApi.getTableData