Vue项目中使用mock.js的完整步骤

在Vue项目中使用mock.js

开发工具选择:Vscode

1. 使用命令行创建vue项目(手动选择Babel,Router,Vuex)

2. 导入element-ui(为了显示效果好一点),命令行输入

npm i element-ui -S

3.在main。js中进行引用

import ElementUI from \'element-ui\'
import \'element-ui/lib/theme-chalk/index.css\';//样式文件一定要引入

Vue.use(ElementUI)

4.新建src/views/main/List.vue使用elememnt-ui中的自定义列模板

<template>
<div>
  <el-table
  :data=\"tableData\"
  style=\"width: 100%\">
  <el-table-column
   label=\"日期\"
   width=\"180\">
   <template slot-scope=\"scope\">
    <i class=\"el-icon-time\"></i>
    <span style=\"margin-left: 10px\">{{ scope.row.date }}</span>
   </template>
  </el-table-column>
  <el-table-column
   label=\"姓名\"
   width=\"180\">
   <template slot-scope=\"scope\">
    <el-popover trigger=\"hover\" placement=\"top\">
     <p>姓名: {{ scope.row.name }}</p>
     <p>住址: {{ scope.row.address }}</p>
     <div slot=\"reference\" class=\"name-wrapper\">
      <el-tag size=\"medium\">{{ scope.row.name }}</el-tag>
     </div>
    </el-popover>
   </template>
  </el-table-column>
  <el-table-column label=\"操作\">
   <template slot-scope=\"scope\">
    <el-button
     size=\"mini\"
     @click=\"handleEdit(scope.$index, scope.row)\">编辑</el-button>
    <el-button
     size=\"mini\"
     type=\"danger\"
     @click=\"handleDelete(scope.$index, scope.row)\">删除</el-button>
   </template>
  </el-table-column>
 </el-table>
</div>
</template>

<script>
 export default {
  data() {
   return {
    tableData: [{
     date: \'2016-05-02\',
     name: \'王小虎\',
     address: \'上海市普陀区金沙江路 1518 弄\'
    }, {
     date: \'2016-05-04\',
     name: \'王小虎\',
     address: \'上海市普陀区金沙江路 1517 弄\'
    }, {
     date: \'2016-05-01\',
     name: \'王小虎\',
     address: \'上海市普陀区金沙江路 1519 弄\'
    }, {
     date: \'2016-05-03\',
     name: \'王小虎\',
     address: \'上海市普陀区金沙江路 1516 弄\'
    }]
   }
  },
  methods: {
   handleEdit(index, row) {
    console.log(index, row);
   },
   handleDelete(index, row) {
    console.log(index, row);
   }
  }
 }
</script>

5.router/index.js配置如下

import Vue from \'vue\'
import VueRouter from \'vue-router\'
//导入组件
import List from \'../views/main/List.vue\'

Vue.use(VueRouter)

const routes = [
 {
  path: \'/\',
  name: \'List\',
  component: List
 },

]

const router = new VueRouter({
 routes
})

export default router

现在的网页显示效果如下

Vue项目中使用mock.js的完整步骤

5. 安装mockjs 和axios

npm install --save-dev mockjs
npm install --save axios

6.新建api/getData.js和request.js

request.js

import axios from \'axios\'
const service = axios.create({
  baseURL : \"http://localhost:8080\",
})
export default service

getData.js

import axios from \'../request\'
//数据列表接口
export const getList = () => axios.get(\"/list\")

7.在src下新建mock/mockServer.js

import Mock from \'mockjs\'
//import data from \'./data.json\'

Mock.mock(\'http://localhost:8080/list\', {
  code: 0, data:
  {
    \'data|1000\': [
      {  
        id: \'@id\',//随机id
        name: \'@name\',//随机名称
        nickName: \'@last\',//随机昵称
        phone: /^1[34578]\\d{9}$/,//随机电话号码
        \'age|11-99\': 1,//年龄
        address: \'@county(true)\',//随机地址
        email: \'@email\',//随机邮箱
        isMale: \'@boolean\',//随机性别
        createTime: \'@datetime\',//创建时间
        avatar() {
          //用户头像
          return Mock.Random.image(\'100×100\', Mock.Random.color(), \'#757575\', \'png\', this.nickName)
        }
      }
    ]
  }

})

8.在main.js中导入mockServer

import \'./mock/mockServer\'

9.修改src/views/main/List.vue(数据获取与绑定,设置表格居中)

<template>
 <div>
  <el-table :data=\"tableData\" style=\"width: 600px;margin: 0 auto\">
   <el-table-column label=\"随机ID\" width=\"200\">
    <template slot-scope=\"scope\">
     <i class=\"el-icon-time\"></i>
     <span style=\"margin-left: 10px\">{{ scope.row.id }}</span>
    </template>
   </el-table-column>
   <el-table-column label=\"姓名\" width=\"180\">
    <template slot-scope=\"scope\">
     <el-popover trigger=\"hover\" placement=\"top\">
      <p>姓名: {{ scope.row.name }}</p>
      <p>住址: {{ scope.row.address }}</p>
      <div slot=\"reference\" class=\"name-wrapper\">
       <el-tag size=\"medium\">{{ scope.row.name }}</el-tag>
      </div>
      <p>邮箱: {{ scope.row.email }}</p>
      <p>性别: {{ scope.row.isMale }}</p>
      <p>昵称: {{ scope.row.nickName }}</p>
      <p>手机号: {{ scope.row.phone }}</p>
      <p>头像:</p>
     </el-popover>
    </template>
   </el-table-column>
   <el-table-column label=\"操作\">
    <template slot-scope=\"scope\">
     <el-button size=\"mini\" @click=\"handleEdit(scope.$index, scope.row)\"
      >编辑</el-button
     >
     <el-button
      size=\"mini\"
      type=\"danger\"
      @click=\"handleDelete(scope.$index, scope.row)\"
      >删除</el-button
     >
    </template>
   </el-table-column>
  </el-table>
 </div>
</template>

<script>
import { getList } from \"../../api/getData\";
export default {
 data() {
  return {
   tableData: [
    //  {
    //   date: \"2016-05-02\",
    //   name: \"王小虎\",
    //   address: \"上海市普陀区金沙江路 1518 弄\",
    //  },
    //  {
    //   date: \"2016-05-04\",
    //   name: \"王小虎\",
    //   address: \"上海市普陀区金沙江路 1517 弄\",
    //  },
    //  {
    //   date: \"2016-05-01\",
    //   name: \"王小虎\",
    //   address: \"上海市普陀区金沙江路 1519 弄\",
    //  },
    //  {
    //   date: \"2016-05-03\",
    //   name: \"王小虎\",
    //   address: \"上海市普陀区金沙江路 1516 弄\",
    //  },
   ],
  };
 },
 methods: {
  handleEdit(index, row) {
   console.log(index, row);
  },
  handleDelete(index, row) {
   console.log(index, row);
  },

  async getMockList() {
   try {
    const result = await getList();
    //console.log(result);
    if (result.data.code == 0) {
     this.tableData = result.data.data.data;
    }
    //console.log(result.data.data.data);
   } catch (error) {
    console.log(error);
   }
  },
 },

 mounted() {
  this.getMockList();
 },

};
</script>

10.再次运行

Vue项目中使用mock.js的完整步骤

鼠标放在姓名上,会有更多信息显示

Vue项目中使用mock.js的完整步骤

显示测试的数据1000条

Vue项目中使用mock.js的完整步骤

分页就懒得做了。。。。

总结

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容