现在基本的趋势就是前后分离,前后分离就意味着当后台接口还没完成之前,前端是没有接口可以拿来调用的
,那么mock虚拟数据就很好的解决了这一问题,前端可以直接模拟真实的数据AJAX请求!
运用 步骤:
1、在项目中安装mockjs、axios
npm install --save axios mockjs
2、在项目src下面建一个mock.js文件
3、在mock.js中写入随机数规则,以及引入mock
const Mock = require('mockjs') // 获取mock对象 const Random = Mock.Random // 获取random对象,随机生成各种数据,具体请翻阅文档 const domain = 'http://mockjs.com/api' // 定义默认域名,随便写 const code = 200 // 返回的状态码 // 随机生成文章数据 const postData = req => { console.log(req) // 请求体,用于获取参数 let posts = [] // 用于存放文章数据的数组 for (let i = 0; i < 10; i++) { let post = { title: Random.csentence(10, 25), // 随机生成长度为10-25的标题 // icon: Random.dataImage('250x250', '文章icon'), // 随机生成大小为250x250的图片链接 author: Random.cname(), // 随机生成名字 date: Random.date() + ' ' + Random.time() // 随机生成年月日 + 时间 } posts.push(post) } // 返回状态码和文章数据posts return { code, posts } } // 定义请求链接,类型,还有返回数据 Mock.mock(`${domain}/posts`, 'get', postData);
4、在入口文件main.js中引入mock.js 和 axios
// mock模拟数据========= import './mock.js' //引入mock import axios from 'axios' Vue.prototype.$ajax = axios //如果不这么写会报错 axios.defaults.baseURL = 'http://mockjs.com/api' // 设置默认请求的url
5、在运用的页面也要引入axios
import axios from 'axios'
坑就在这里!!!!费了我一个下午!!!一直报这个错误!!!
研究了半天终于有效
在最后调用的地方改一下
this.$axios.get('/api/data').then((res)=>{ console.log(res); })
改成
axios.get("/posts").then(res => { console.log(res.request.responseText); });
OK!!完美