vue-cli3 :mock模拟数据,用axios请求数据过程遇到的问题

mock是用来模拟数据,对于前端开发而言这是真正的独立开发,之前都是自己手动模拟数据,页面多了就感觉很混乱而且效率不高,还不能真正去模拟请求后台数据。

之前请求后台是用ajax,最近学vue框架,所以采用axios.(希望一切友好....)

首先在项目里先安装mock,以及axios

安装好之后,接下来开始配置:

1.先看一眼我的目录,没有箭头的可以忽略

2.修改内容

 2.1配置config文件

 

const mockIndexData = require("./src/mock");
 
module.exports = {
    //...  
    devServer: {
        port: 8080,
        before(app) {
            app.post("/news/index", (req, res) => {
                res.json(mockIndexData);
            });
        }
    }
};

2.2mian文件

require('./mock')

没错就一句话,------------是指向mock文件下index.js文件的意思(编辑器有快捷跳转功能的可以点一下就知道,如果你的文件路径以及名称跟我的不一样配置是不同的,但意思一样哈)

2.3 mock的index文件

// 引入mockjs
const Mock = require('mockjs');
// 获取 mock.Random 对象
const Random = Mock.Random;
// mock一组数据
const produceNewsData = function() {
    let articles = [];
    for (let i = 0; i < 10; i++) {
        let newArticleObject = {
            title: Random.csentence(5, 30), //  Random.csentence( min, max )
            thumbnail_pic_s: Random.dataImage('300x250', 'mock的图片'), // Random.dataImage( size, text ) 生成一段随机的 Base64 图片编码
            author_name: Random.cname(), // Random.cname() 随机生成一个常见的中文姓名
            date: Random.date() + ' ' + Random.time() // Random.date()指示生成的日期字符串的格式,默认为yyyy-MM-dd;Random.time() 返回一个随机的时间字符串
        }
        articles.push(newArticleObject)
    }

    return {
        articles: articles
    }
}

// Mock.mock( url, post/get , 返回的数据);
Mock.mock('/news/index', 'post', produceNewsData);

2.4.页面vue引用

运行后:

 

过程的问题:

大家留意到没,我axios用的是post请求方式,其实一开始用的是get请求,config也是get请求,但是页面报错404找不到路径。

有点懵,本来理解不是很透,所以没明白,有其他高手路过的可以指点一二。

 

 

过程参考文章https://www.cnblogs.com/jasonwang2y60/p/7302449.html

这里是cli2版本的,所以只参考了mock数据部分

 

彩蛋:

搞完后还有个疑问,我在config是配置一个url,要是模拟多个url呢。我干脆不要在config里配置,发现也是成功的,当时是针对post请求方式。

在mockjs里面追加一个url

let texts=[];
for (let i = 0; i < 10; i++) {
		let textData ={
			name:Random.cname(),
			con: Random.csentence(5, 12),
		}
		texts.push(textData);
}
Mock.mock('/news/index02', 'post', texts);

 然后在getHomeData方法后面追加一条请求记录

axios.post("/news/index02").then(res => {
                console.log(res);
                // ...
                });

最后执行结果

完美~

posted @ 2019-06-14 15:16  树叶铃铛  阅读(3363)  评论(0编辑  收藏  举报