当前位置: 首页 > news >正文

vue实战-mockjs模拟数据

vue实战-mockjs模拟数据

1.在src目录下创建文件夹mock

2.将模拟的json格式的数据写入到文件夹中

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"
  }
]

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"
  }
]

3.将所需要的图片资源复制到public下的images文件夹下

在这里插入图片描述

4.在mock中创建mockServer.js用来模拟数据

mockServer.js

//引入mockjs插件
//这是对象,必须要大写
import Mock from 'mockjs'
//引入json文件
//webpack下默认暴露的文件格式是:图片和json数据格式,所以这里的json文件不需要暴露
import banner from './banner.json'
import floor from './floor.json'

//使用Mock对象中的mock方法模拟服务器返回的值
//传入两个参数:第一个参数是:请求地址,第二个参数是请求数据
Mock.mock('/mock/banner',{code:200,data:banner})
Mock.mock('/mock/floor',{code:200,data:floor})

5.需要在入口文件main.js中引入才能读取到

//引入mock
import "@/mock/mockServer"

6.实例:首页轮播图获取数据

1)在api文件夹中进行axios的二次封装

mockRequest.js
在创建axios实例时的默认api改成’/mock’

//axios的二次封装
import axios from 'axios'

//引入进度条插件
import nProgress from 'nprogress'
//引入进度条样式
import 'nprogress/nprogress.css'

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

//请求拦截器
requests.interceptors.request.use(config =>{
    //config里面包含请求头head
    //进度条开始
    nProgress.start()
    return config
})

// 响应拦截器
//成功与失败的回调函数
requests.interceptors.response.use((res)=>{
    //进度条结束
    nProgress.done()
    return res.data
},(err)=>{
    return err.message
})

export default requests

2)在接口管理文件中添加mock的数据接口

import mockRequests from './mockRequest'
//mock的接口
export const reqBannerList = () =>{
    return mockRequests({url:'/banner',method:'get'})
}
export const reqFloorList = () =>{
    return mockRequests({url:'/floor',method:'get'})
}

3)进行vuex的一系列操作

1.在轮播图的组件下挂载派发actions
mounted(){
    this.$store.dispatch('getBannerList')
  }
2.home下小仓库中的数据接收处理并进state
//home下的仓库
import { reqCategoryList,reqBannerList} from "@/api"
const state={
    categoryList:[],
    bannerList:[]
}
const mutations={
    CATEGORYLIST(state,categoryList){
        state.categoryList = categoryList
    },
    GETBANNERLIST(state,bannerList){
        state.bannerList = bannerList
    }
}
const actions={
    //通过API里面的接口函数调用,向服务器发请求,获取服务器的数据
    async categoryList({commit}){
        let result = await reqCategoryList()
        if(result.code == 200){
            commit('CATEGORYLIST', result.data)
        }
        
    },
    async getBannerList({commit}){
        const result = await reqBannerList()
        if(result.code == 200){
            commit('GETBANNERLIST',result.data)
        }
    }
}
const getters={}

export default {
    state,
    mutations,
    actions,
    getters
}
3.将仓库中的值返回到页面组件中

利用计算mapState

import { mapState } from 'vuex';

computed:{
    ...mapState({
      bannerList:state => state.home.bannerList
    })
  }

相关文章:

  • 深度学习优化算法之动量法[公式推导](MXNet)
  • tomcat面试和Spring的面试题
  • 网课查题公众号接口
  • 基于Hive的搜狗搜索日志与结果Python可视化设计
  • vue+echarts项目四:地区销量趋势(堆叠折线图)
  • SpringSecurity实战-第6-8章
  • 前端 基础知识
  • 【极客时间2】左耳听风
  • 六级高频词汇——Group07
  • C++类和对象详解(中篇)
  • java五位随机验证码的实现。要求前四位是随机大小写的字母,最后一位是数字的组合。例如qWrY4
  • 《关于我摸鱼一天后搞定PyCharm这档事》Python环境配置
  • 公众号网课搜题系统
  • 【C++ Primer Plus】第13章 类继承
  • 中国网络安全专家专业技能水平
  • canvas实际项目操作,包含:线条,圆形,扇形,图片绘制,图片圆角遮罩,矩形,弧形文字...
  • Elasticsearch 参考指南(升级前重新索引)
  • exports和module.exports
  • fetch 从初识到应用
  • iOS 系统授权开发
  • JAVA并发编程--1.基础概念
  • JAVA之继承和多态
  • JS 面试题总结
  • Js基础——数据类型之Null和Undefined
  • Redash本地开发环境搭建
  • Spring Boot快速入门(一):Hello Spring Boot
  • 工作踩坑系列——https访问遇到“已阻止载入混合活动内容”
  • 技术:超级实用的电脑小技巧
  • 区块链共识机制优缺点对比都是什么
  • 如何用vue打造一个移动端音乐播放器
  • 使用 Docker 部署 Spring Boot项目
  • 王永庆:技术创新改变教育未来
  • 一起参Ember.js讨论、问答社区。
  • 白色的风信子
  • ​2021半年盘点,不想你错过的重磅新书
  • ​LeetCode解法汇总2670. 找出不同元素数目差数组
  • ​软考-高级-系统架构设计师教程(清华第2版)【第12章 信息系统架构设计理论与实践(P420~465)-思维导图】​
  • #LLM入门|Prompt#1.7_文本拓展_Expanding
  • (20050108)又读《平凡的世界》
  • (附源码)ssm教师工作量核算统计系统 毕业设计 162307
  • (附源码)小程序 交通违法举报系统 毕业设计 242045
  • (黑客游戏)HackTheGame1.21 过关攻略
  • (五)网络优化与超参数选择--九五小庞
  • (转)利用ant在Mac 下自动化打包签名Android程序
  • (转载)OpenStack Hacker养成指南
  • (轉貼) 2008 Altera 亞洲創新大賽 台灣學生成果傲視全球 [照片花絮] (SOC) (News)
  • .NET:自动将请求参数绑定到ASPX、ASHX和MVC(菜鸟必看)
  • .NetCore实践篇:分布式监控Zipkin持久化之殇
  • @拔赤:Web前端开发十日谈
  • [android] 天气app布局练习
  • [BUUCTF]-Reverse:reverse3解析
  • [cb]UIGrid+UIStretch的自适应
  • [IE编程] 多页面基于IE内核浏览器的代码示例
  • [iOS]iOS获取设备信息经常用法
  • [Latex学习笔记]数学公式基本命令