vue實踐---vue配合express實現請求數據mock


mock數據是前端比較常見的技術,這里介紹下vue配合express 實現請求數據mock。

第一步:

安裝 express :  npm install express -D

第二步:

簡歷需要mock的數據,在src下新建mock文件夾,文件里面新建兩個文件data1.json和data2.json,如下:

data1.json內容如下:

{
    "name": "yanyalong",
    "title": "測試",
    "data": [
        {
            "field_code": "111", "code": "initiatorDept", "errcode": 0, "errmsg": "ok","mextendData": null, "formId": "processVariable", "formName": "流程字段11", "id": "initiatorDept", "name": "stringsasassa", "system": true,
            "type" : { "errcode" : 0,"errmsg" : "ok","id" : null, "code" : null,"name" : "string" },
            "relationListType": ["equals","containsIgnoreCase"]
        }, 
        {
            "field_code": "22", "code": "initiatorDept", "errcode": 0, "errmsg": "ok","mextendData": null, "formId": "processVariable", "formName": "流程字段11", "id": "asdada", "name": "發起人部門", "system": true,
            "type" : { "errcode" : 0,"errmsg" : "ok","id" : null, "code" : null,"name" : "reference" },
            "relationListType": ["contains","stringNotContains"]
        }, 
        {
            "field_code" : "33", "errcode" : 0, "errmsg" : "ok","id" : "initiatorUserGroup", "code" : "initiatorUserGroup", "name" : "發起人所屬用戶組","system" : true,
            "type" : {"errcode" : 0,"errmsg" : "ok",  "id" : null, "code" : null, "name" : "string"  }, "formId" : "processVariable","formName" : "流程字段","extendData" : null,
            "relationListType": ["notEquals","containsIgnoreCase", "notContainsIgnoreCase"]
        }
    ]    
}

data2.json內容如下:

{
    "value": "hello 你好"
}

第三步:

修改 webpack.dev.conf.js 的配置,在devServer里新增如下代碼,這樣在請求/api1 這個url路徑的時候就會返回data1.json, /api2返回data2.json 

before (app) {
      const express = require('express')
      const App = express()
      // 加載本地數據文件
      var appData1 = require('./../src/mock/data1.json')
      var appData2 = require('./../src/mock/data2.json')
      var apiRoutes = express.Router()
      App.use('/api1', apiRoutes)
      App.use('/api2', apiRoutes)
  
      app.get('/api1', (req, res) => {
        res.json(appData1)
      })
      app.get('/api2', (req, res) => {
        res.json(appData2)
      })
    }

 第四步:

使用方法如下:

<template>
  <div id="app">
    <img src="./assets/logo.png">
    <HelloWorld/>
  </div>
</template>

<script>
import axios from 'axios'
import HelloWorld from './components/HelloWorld'

export default {
  name: 'App',
  components: {
    HelloWorld
  },
  mounted () {
    axios.get('/api1').then((res) => {
      console.log(res)
    })
    axios.get('/api2').then((res) => {
      console.log(res)
    })
  }
}
</script>

具體的代碼可以看這里:https://github.com/YalongYan/vue-practice/tree/master/express-axios-mock

補充說明:

現在的vue-cli項目沒有了webpack.dev.conf.js文件了,不過有webpack.config.js, 原理是一樣的,在webpack.config.js里面找到devServer, 把 before (app) 這段代碼放進去效果是一樣的。

我這里做了判斷,只有開發環境的時候 才啟用mock請求數據,生產環境的時候就不需要了,代碼如下(這段代碼是在webpack.dev.conf.js最后面):

if (process.env.NODE_ENV === 'production') {
  // 生產環境的代碼
} else {
  // express 實現 mock數據
  module.exports.devServer.before = (app)=> {
    const express = require('express')
    const App = express()
    // 加載本地數據文件
    var appData = require('./src/mock/data1.json')
    var apiRoutes = express.Router()
    App.use('/api', apiRoutes)

    app.get('/api', (req, res) => {
      res.json(appData)
    })
  }
}

 

vue實踐系列請看這里: https://github.com/YalongYan/vue-practice

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM