zoukankan      html  css  js  c++  java
  • vue学习之路 —— vue+mock 前后端分离随机生成数据

    写在前面的话:

      自学Vue中,手写json数据,被同事看到,问我你怎么不用mock,忽然觉得自己太落后了

      永远不能停止学习

      啊啊啊

      立马上手去学习mock,真的很方便

      学习过程中还是遇到了很多问题,最终搞出来了,在此记录,防止自己忘记

    ——————————————————————————————————————————————————————————

    一、安装mock

      npm install mockjs --save-dev

    二、实例(举个小栗子)

      1、新建一个mock文件夹,里面创建index.js,table.js()

      目录如下:

      

     

      2、在main.js中引入mock

    import '@/mock/index.js';
    

      

      3、在mock/index.js中写如下代码:  

    import mockjs from 'mockjs';
    
    import TableApi from './table.js' //引入生成数据的js
    
    const Mock = require('mockjs') // Mock函数
    // 使用拦截规则拦截命中的请求
    
    Mock.mock('api/getTableData','get',TableApi.getTableData);//此处url要与使用数据的组件中请求的url一致
    //api/getTableData 为组件页面请求的url,拦截此url,使用table.js中的getTableData生成的虚拟数据
    export
    default mockjs

      

      4、在mock/table.js中写入如下代码  

    ·

    import Mock from 'mockjs'
    
    const code = 200 // 状态码 项目同一
    
    export default{
      getTableData () {
        let data = Mock.mock({
          'list|10': [{
            'userID|+1': 1,
            'userName':'@cname',
            'date':'@date',
            'address':"@region"
          }]
        })
        return {
          code,
          data
        }
      }
    }

      5、在需要引入数据的组件内写如下代码(此处html使用了element)

    <template>
      <el-table
        :data="tableData"
        style=" 100%">
        <el-table-column
          prop="date"
          label="日期"
          width="180">
        </el-table-column>
        <el-table-column
          prop="userName"
          label="姓名"
          width="180">
        </el-table-column>
        <el-table-column
          prop="address"
          label="地址">
        </el-table-column>
      </el-table>
    </template>
    
    <script>
      export default {
        data() {
          return {
            tableData: []
          }
        },
        mounted(){
          this.createTable();
        },
        created(){
          //组件实例创建完成,此时dom还未生成
        },
        methods:{
          createTable(){
            let $this = this;
    //        getTableData(data)
            this.$axios.get('api/getTableData') //此处地址为mock/index.js文件中.mock函数中的路径
              .then(response => {
                let $data = response.data.data;
                $this.tableData = $data;
              })
          }
        }
      }
    </script>

      6、npm run dev运行,效果如下图

      

     

    TableApi.getTableData
  • 相关阅读:
    vue项目页面空白
    vue使用nprogress页面加载进度条
    如何让一个div居于页面正中间
    Django项目使用七牛云存储图片
    Celery ValueError: not enough values to unpack (expected 3, got 0)的解决方案
    网站ico那点事儿
    SpringBoot2.0 + SpringCloud Eureka搭建高可用注册中心(Eureka之三)
    SpringBoot2.0+SpringCloud Eureka构建服务治理(Eureka之一)
    SpringBoot2.0+SpringCloud Eureka搭建高可用注册中心(Eureka之二)
    Synchronized重入锁
  • 原文地址:https://www.cnblogs.com/xwtbk/p/11058888.html
Copyright © 2011-2022 走看看