vue使用mock模拟数据

文件目录
在这里插入图片描述

mock文件夹下的index.js


import Mock from 'mockjs';

//webpack默认对外暴露图片、JSON数据格式
import banner from './banner.json'
import floor from './floor.json'

//mock数据:第一个参数请求地址  第二个参数: 请求数据
Mock.mock("/mock/banner",'get',{code:200,data:banner});//模拟首页大的轮播图的数据
Mock.mock("/mock/floor",'post',{code:200,data:floor});

mock文件下的banner.json


[
    {
        "id":"1",
        "imgUrl":"/images/banner1.jpg"
    },
    {
        "id":"2",
        "imgUrl":"/images/banner2.jpg"
    },
    {
        "id":"3",
        "imgUrl":"/images/banner3.jpg"
    },
    {
        "id":"4",
        "imgUrl":"/images/banner4.jpg"
    }
]

mock文件夹下的floor.json

[{
        "id": "001",
        "name": "家用电器",
        "keywords": ["节能补贴", "4K电视", "空气净化器", "IH电饭煲", "滚筒洗衣机", "电热水器"],
        "imgUrl": "/images/floor-1-1.png",
        "navList": [{
                "url": "#",
                "text": "热门"
            },
            {
                "url": "#",
                "text": "大家电"
            },
            {
                "url": "#",
                "text": "生活电器"
            },
            {
                "url": "#",
                "text": "厨房电器"
            },
            {
                "url": "#",
                "text": "应季电器"
            },
            {
                "url": "#",
                "text": "空气/净水"
            },
            {
                "url": "#",
                "text": "高端电器"
            }
        ],
        "carouselList": [{
                "id": "0011",
                "imgUrl": "/images/floor-1-b01.png"
            },
            {
                "id": "0012",
                "imgUrl": "/images/floor-1-b02.png"
            },
            {
                "id": "0013",
                "imgUrl": "/images/floor-1-b03.png"
            }
        ],
        "recommendList": [
            "/images/floor-1-2.png",
            "/images/floor-1-3.png",
            "/images/floor-1-5.png",
            "/images/floor-1-6.png"
        ],
        "bigImg": "/images/floor-1-4.png"
    },
    {
        "id": "002",
        "name": "手机通讯",
        "keywords": ["节能补贴2", "4K电视2", "空气净化器2", "IH电饭煲2", "滚筒洗衣机2", "电热水器2"],
        "imgUrl": "/images/floor-1-1.png",
        "navList": [{
                "url": "#",
                "text": "热门2"
            },
            {
                "url": "#",
                "text": "大家电2"
            },
            {
                "url": "#",
                "text": "生活电器2"
            },
            {
                "url": "#",
                "text": "厨房电器2"
            },
            {
                "url": "#",
                "text": "应季电器2"
            },
            {
                "url": "#",
                "text": "空气/净水2"
            },
            {
                "url": "#",
                "text": "高端电器2"
            }
        ],
        "carouselList": [{
                "id": "0011",
                "imgUrl": "/images/floor-1-b01.png"
            },
            {
                "id": "0012",
                "imgUrl": "/images/floor-1-b02.png"
            },
            {
                "id": "0013",
                "imgUrl": "/images/floor-1-b03.png"
            }
        ],
        "recommendList": [
            "/images/floor-1-2.png",
            "/images/floor-1-3.png",
            "/images/floor-1-5.png",
            "/images/floor-1-6.png"
        ],
        "bigImg": "/images/floor-1-4.png"
    }
]

api文件夹下的request.js(axios二次封装)

import axios from 'axios'
import config from '@/config'

//判断是开发环境还是生产环境
const baseURL = process.env.NODE_ENV  === 'development' ? config.baseUrl.dev : config.baseUrl.pro

//创建axios实例
const requests =  axios.create({
    baseURL:baseURL,
    timeout:10000
})

//请求拦截器
requests.interceptors.request.use((config)=>{
    console.log(config)
    return config
})

//响应拦截器
requests.interceptors.response.use((res)=>{
    //响应成功
    console.log(res)
    return res.data
},(error)=>{
    //响应失败
    console.log(error)
    return Promise.reject(new Error('faile'))
})

export default requests

config文件夹下的index.js

export default {
    baseUrl:{
        dev:'/api/',//开发环境
        pro:''//生成环境
    }
}

api文件夹下的index.js

import requests  from "./request";
export const getMenu = ()=>requests(
    {
        url:'/banner',
        method:'get'
    }
)

在组件中或者vuex仓库中使用

<script>
import {getMenu} from '@/api'
export default {
  name: "home",
  mounted(){
    getMenu().then(res=>{
      console.log(res)
    })
  }
};


</script>

//或者使用async,await

<script>
import {getMenu} from '@/api'
export default {
  name: "home",
    mounted(){
    // getMenu().then(res=>{
    //   console.log(res)
    // })
    this.getList()
  },
  methods:{
    async getList(){
      var resulet = await getMenu()
      console.log(resulet)
    }
  }
};


</script>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Vue项目中,可以使用mock.js来模拟数据请求。引用\[1\]中提到,mock.js可以在后端没有提供接口的情况下,自己模拟一个mock接口去请求,并且可以返回你希望得到的随机数据。这对于本地开发和演示项目非常有用。引用\[2\]中提到,使用mock.js可以完全本地化实现数据,方便前端人员定义接口数据,并且可以配合后台人员进行开发。在Vue项目中,可以通过引入mock.js并定义mock接口来模拟数据请求。例如,可以在一个mock文件夹中创建一个mock.js文件,然后在该文件中定义接口和返回的数据。在Vue组件中,可以通过发送请求来获取mock数据。引用\[3\]中给出了一个示例,展示了如何使用mock.js来请求获取.json文件的数据。在该示例中,首先引入了mock-request工具和项目的设置文件,然后定义了一个tableData函数来发送请求并获取数据。这样,你就可以在Vue项目中使用mock.js来模拟数据请求了。 #### 引用[.reference_title] - *1* [【Vue使用mock模拟数据](https://blog.csdn.net/ZHANGYANG_1109/article/details/124547442)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [vue本地模拟服务器请求mock数据](https://blog.csdn.net/liyoro/article/details/119616107)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值