webpack.dev.conf.js配置mock和easy-mock

it2022-05-05  152

1.将 data.json 文件拷贝到 sellapp 目录下(与 index.html 同级)

2.在 webpack.dev.conf.js 中添加以下代码:

在const portfinder = require(‘portfinder’)后添加 const express = require('express') const app = express() var appData = require('../mock/goods.json')//加载本地数据文件 var apiRoutes = express.Router() app.use('/api', apiRoutes)

var seller = appData.seller;

var goods = appData.goods;

var ratings = appData.ratings;

 

2、

//然后找到devServer,在里面添加

before(app) {

app.get('/api/seller', (req, res) => {

res.json({

errno: 0,

data: seller

})//接口返回json数据,上面配置的数据appData就赋值给data请求后调用

})

app.get('/api/goods', (req, res) => {

res.json({

errno: 0,

data: goods

})//接口返回json数据,上面配置的数据appData就赋值给data请求后调用

})

app.get('/api/ratings', (req, res) => {

res.json({

errno: 0,

data: ratings

})//接口返回json数据,上面配置的数据appData就赋值给data请求后调用

})

},

},

3、然后npm run dev,一定要重启 一下就可以http://localhost:8080/api/appData 访问了

注释:Google可以用 jsonview 插件将返回数据格式化

npm run dev,启动后输入http://localhost:8080/api/seller,如果数据正常显示,则数据能正常返回

 

扩展easy-mock

easy-mock是比较好用的一个图形化的网站,我们完全可以使用他来模拟我们的Mock数据。 网址:https://www.easy-mock.com/ 

axios的引入

npm install --save axios

安装之后在要使用的页面组件中进行引入。  import axiso from 'axiso'

然后在created的声明周期里取得数据

created(){     axios({         url: 'https://www.easy-mock.com/mock/5ae2427800247c2aa1efe442/SmileVue/',         method: 'get',     })     .then(response => {         console.log(response)     })     .catch((error) => {          }) }

 

 

 

 

mock  get 请求实例(react)  getdata文件

//使用Mock

import Mock from 'mockjs'

 

export default Mock.mock(/getdata1/, 'get'/"post", {

    success: true,

    // 属性 list 的值是一个数组,其中含有 1 到 3 个元素

    message: '@cparagraph',

    'list|1-3': [{

        // 属性 sid 是一个自增数,起始值为 1,每次增 1

        'sid|+1': 1,

        // 属性 userId 是一个5位的随机码

        'userId|5': '',

        // 属性 sex 是一个bool值

        "sex|1-2": true,

        // 属性 city对象 是对象值中2-4个的值

        "city|2-4": {

            "110000": "北京市",

            "120000": "天津市",

            "130000": "河北省",

            "140000": "山西省"

        },

        //属性 grade 是数组当中的一个值

        "grade|1": [

            "1年级",

            "2年级",

            "3年级"

        ],

        //属性 guid 是唯一机器码

        'guid': '@guid',

        //属性 id 是随机id

        'id': '@id',

        //属性 title 是一个随机长度的标题

        'title': '@title()',

        //属性 paragraph 是一个随机长度的段落

        'paragraph': '@cparagraph',

        //属性 image 是一个随机图片 参数分别为size, background, text

        'image': "@image('200x100', '#FFC0CB', 'Hello')",

        //属性 address 是一个随机地址

        'address': '@county(true)',

        //属性 date 是一个yyyy-MM-dd 的随机日期

        'date': '@date("yyyy-MM-dd")',

        //属性 time 是一个 size, background, text 的随机时间

        'time': '@time("HH:mm:ss")',

        //属性 url 是一个随机的url

        'url': '@url',

        //属性 email 是一个随机email

        'email': '@email',

        //属性 ip 是一个随机ip

        'ip': '@ip',

        //属性 regexp 是一个正则表达式匹配到的值 如aA1

        'regexp': /[a-z][A-Z][0-9]/,

    }]

})

 

app.js里面挂载我们的数据来进行中间件拦截

import React from 'react'; import Mock from './components/Mock'

//挂载 Mock import './mock/getdata.js'

import './mock/postdata.js'

组件中使用,

 

  getDate1 = () =>{         axios.get('/getdata1', {             params:{                 id : '123'             }         })         .then((res)=>{             console.log(res.data)             this.setState({                 gData: res.data.message             })         })         .catch((err)=>{             console.log(err)         })     }

    getDate2 = () => {         axios.post('/postdata1', {             params: {                 name: 'jack'             }         })         .then((res)=>{             console.log(res.data)             this.setState({                 pData: res.data.message             })         })         .catch((err)=>{             console.log(err)         })     }  


最新回复(0)