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

vue实践---vue配合express实现请求数据mock的更多相关文章

  1. vue实践中的狗血事件之:mock数据引发的血坑

    在项目实践中,遇到了这么一档子事 开发环境下,很快乐,什么事儿都没有,于是想打包一下测一下自动登录的效果 好家伙,一开始登录没有效,改来改去,最后连路由都切换不了, 明明开发环境下好好的,为毛打包后就 ...

  2. Vue.js 2.0 跨域请求数据

    Vuejs由1.0更新到了2.0版本.HTTP请求官方也从推荐使用Vue-Resoure变为了 axios .接下来我们来简单地用axios进行一下异步请求.(阅读本文作者默认读者具有使用npm命令的 ...

  3. Vue框架Element UI教程-axios请求数据

    Element UI手册:https://cloud.tencent.com/developer/doc/1270 中文文档:http://element-cn.eleme.io/#/zh-CN gi ...

  4. vue实践---vue结合 promise 封装原生ajax

    有时候不想使用axios这样的外部依赖,想自己封装ajax,这里有两种方法 方法一,在单个页面内使用 封装的代码如下: beforeCreate () { this.$http = (() => ...

  5. vue实践---vue不依赖外部资源实现简单多语

    vue使用多语,最常见的就是 vue-i18n, 但是如果开发中的多语很少,比如就不到10个多语,这样就没必要引入vue-i18n了, 引入了反正导致代码体积大了,这时候单纯用vue实现多语就是比较好 ...

  6. vue实践---vue动态加载组件

    开发中遇到要加载10个或者更多的,类型相同的组件时,如果用普通的 import 引入组件,components注册组件,代码显得太啰嗦了,这时候就需要用到 require.context 动态加载这些 ...

  7. vue中使用axios进行ajax请求数据(跨域配置)

    npm安装axios npm install axios --save 引入axios import axios from 'axios' 使用axios mounted () { this.getH ...

  8. AFNetworking配合Swift3.0请求数据

    首先用桥接或pods将AFNetworking导入项目,在这不再赘述,然后创建一个单例NetWorkTools.swift 继承:AFHTTPSessionManager import UIKit i ...

  9. $Django 前后端之 跨域问题(同源策略) vue项目(axios跨域请求数据)

    1 跨域问题(多个域之间的数据访问) #同源策略(ip port 协议全部相同) #本站的只能请求本站域名的数据 #CORS实现(跨域资源共享) #实现CORS通信的关键是服务器.只要服务器实现了CO ...

随机推荐

  1. Oracle truncate、 delete、 drop区别

    相同点: 1.truncate和不带where子句的delete.以及drop都会删除表内的数据. 2.drop.truncate都是DDL语句(数据定义语言),执行后会自动提交. 不同点: 1. t ...

  2. kubernetes1.5.2--部署监控服务

    本文基于kubernetes 1.5.2版本编写 Heapster是kubernetes集群监控工具.在1.2的时候,kubernetes的监控需要在node节点上运行cAdvisor作为agent收 ...

  3. ubuntu配置无密码登录

    1 本地生成ssh公钥和私钥, 2将公钥拷贝到ubuntu上的.ssh/authorized_keys 中

  4. 速查笔记(Linux Shell编程<下>)

    转载自: http://www.cnblogs.com/stephen-liu74/archive/2011/11/04/2228133.html 五.BASH SHELL编程: 1.    初始化顺 ...

  5. Android学习(十) SQLite 基于SQL语句的操作方式

    main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns ...

  6. OpenStack二三事(1)

    更新系列不是教材,不说教,不讲道理,仅仅记录. OpenStack在云计算领域大热,没有理由不去了解它. 先说说我对OpenStack的感觉,开源.廉价.麻烦.大家都在用,在了解开发流程后.OpenS ...

  7. 使用UI Automation实现自动化测试--1

    Introduction UI Automation是Microsoft .NET 3.0框架下提供的一种用于自动化测试的技术,是在MSAA基础上建立的,MSAA就是Microsoft Active ...

  8. vue-router 响应路由参数的变化

    提醒一下,当使用路由参数时,例如从 /user/foo 导航到 /user/bar,原来的组件实例会被复用.因为两个路由都渲染同个组件,比起销毁再创建,复用则显得更加高效.不过,这也意味着组件的生命周 ...

  9. 使用php在服务器端生成图文验证码

    图文验证码的实现原理: 1):准备些许图片将其存储在数据库,每一张图片对应一个标识字段. 2):在服务器端使用数组的形式将图片与标识字段组合起来. 3):随机给客户端返回图片,并接受用户输入的字段. ...

  10. [ACM] HDU 5078 Osu!

    Osu! Problem Description Osu! is a very popular music game. Basically, it is a game about clicking. ...