Vue中安装和使用 Mock 进行数据模拟 (图文教程)

在这里插入图片描述

查看本专栏目录


Vue2面试题及答案(150道)

文章序号vue2面试题150道
1vue2 面试题及详细答案(01 - 20)
2vue2 面试题及详细答案(21 - 40)
3vue2 面试题及详细答案(41 - 60)
4vue2 面试题及详细答案(61 - 70)
5vue2 面试题及详细答案(71 - 80)
6vue2 面试题及详细答案(81 - 90)
7vue2 面试题及详细答案(91 - 100)
8vue2 面试题及详细答案(101 - 120)
9vue2 面试题及详细答案(121 - 130)
10vue2 面试题及详细答案(131 - 140)
11vue2 面试题及详细答案(141 - 150)

在做前后分离的项目时候,比如制作VUE项目,很多时候后端没有提供接口,前端人员可以自己通过mock来造一个接口,返回数据

操作步骤

1) 安装mockjs和axios:

npm install mockjs -S
npm install axios -S (用于页面调用接口数据)

2)创建mock.js文件(以与main.js同级为例子)

var Mock = require(‘mockjs’)
Mock.mock(“/getNewsList”, () => {
return [1,12,3,5,4,45,“nihao”];
})

3)main.js中引用mock.js

require(“./mock.js”)
or
import “./mock.js”

4)页面中发送axios请求,获取数据

import axios from “axios”
export default {
mounted() {
axios.get(“/getNewsList”).then(res => {
console.log(res)
})
}
}

实际例子

效果图

在这里插入图片描述

主要目录结构

在这里插入图片描述

mock/index.js 代码

//mock/index.js 
import Mock from 'mockjs' //引入mockjs,npm已安装 
import { Random,toJSONSchema } from 'mockjs' // 引入random对象,随机生成数据的对象,(与占位符@一样) 
Mock.setup({ 
  timeout:500  //设置请求延时时间 
}) 
 
const produceData = function (opt) { 
  console.log("opt",opt); 
  let articles = []; 
  for(let i=0;i<10;i++){ 
    let newArticleObject = { 
      title:Random.csentence(5,30), 
      thumbnail_pic_s:Random.dataImage('100x50','zjcopy.com'), 
      date:Random.date()+''+Random.time(), 
      email:Random.email(), 
      name:Random.cname() 
    } 
    articles.push(newArticleObject) 
  } 
  return { 
    data:articles 
  } 
} 
Mock.mock('/name',/post|get/i,produceData)//当post 或者get 请求到news路由时MOCK会拦截请求并返回 

home.vue代码

<template> 
  <div class="home"> 
      <template> 
        <el-table 
          :data="tableData" 
          style="width: 100%"> 
          <el-table-column 
            prop="date" 
            label="日期" 
            width="180"> 
          </el-table-column> 
          <el-table-column 
            prop="name" 
            label="姓名" 
            width="180"> 
          </el-table-column> 
          <el-table-column 
            prop="email" 
            label="地址"> 
          </el-table-column> 
          <el-table-column 
            prop="title" 
            label="标题"> 
          </el-table-column> 
          <el-table-column 
            prop="title" 
            label="图片"> 
               <template slot-scope="scope"> 
                   <el-image :src="scope.row.thumbnail_pic_s"></el-image> 
              </template> 
          </el-table-column> 
        </el-table> 
      </template> 
  </div> 
</template> 
 
<script> 
 
export default { 
  name: 'Home', 
  data(){ 
      return{ 
          tableData:[], 
      } 
  }, 
  mounted(){ 
    this.getdata()   
  }, 
  methods:{ 
    getdata(){ 
        let url="/name"                //调用Mock接口地址
        this.$request(url, {}, "GET")  //使用的是封装的axios方法
        .then((res) => { 
          this.tableData=res.data.data 
          console.log(this.tableData) 
        }) 
    },   
  } 
} 
</script> 

项目示例地址:

https://github.com/dajianshi/vue-mock-demo

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

还是大剑师兰特

打赏一杯可口可乐

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值