zoukankan      html  css  js  c++  java
  • 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);
                    // ...
                    });

    最后执行结果

    完美~

  • 相关阅读:
    ubuntu开机启动
    我的linux之路
    继承
    oracle 10g win7 win8 下的安装
    Java 安全检测
    BigDecimal 四舍五入
    Java Map 便利
    java split . |
    java 爬虫 Jsoup
    获取当前路径
  • 原文地址:https://www.cnblogs.com/yflbk-2016/p/11023418.html
Copyright © 2011-2022 走看看