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
vue实践---vue配合express实现请求数据mock的更多相关文章
- vue实践中的狗血事件之:mock数据引发的血坑
在项目实践中,遇到了这么一档子事 开发环境下,很快乐,什么事儿都没有,于是想打包一下测一下自动登录的效果 好家伙,一开始登录没有效,改来改去,最后连路由都切换不了, 明明开发环境下好好的,为毛打包后就 ...
- Vue.js 2.0 跨域请求数据
Vuejs由1.0更新到了2.0版本.HTTP请求官方也从推荐使用Vue-Resoure变为了 axios .接下来我们来简单地用axios进行一下异步请求.(阅读本文作者默认读者具有使用npm命令的 ...
- Vue框架Element UI教程-axios请求数据
Element UI手册:https://cloud.tencent.com/developer/doc/1270 中文文档:http://element-cn.eleme.io/#/zh-CN gi ...
- vue实践---vue结合 promise 封装原生ajax
有时候不想使用axios这样的外部依赖,想自己封装ajax,这里有两种方法 方法一,在单个页面内使用 封装的代码如下: beforeCreate () { this.$http = (() => ...
- vue实践---vue不依赖外部资源实现简单多语
vue使用多语,最常见的就是 vue-i18n, 但是如果开发中的多语很少,比如就不到10个多语,这样就没必要引入vue-i18n了, 引入了反正导致代码体积大了,这时候单纯用vue实现多语就是比较好 ...
- vue实践---vue动态加载组件
开发中遇到要加载10个或者更多的,类型相同的组件时,如果用普通的 import 引入组件,components注册组件,代码显得太啰嗦了,这时候就需要用到 require.context 动态加载这些 ...
- vue中使用axios进行ajax请求数据(跨域配置)
npm安装axios npm install axios --save 引入axios import axios from 'axios' 使用axios mounted () { this.getH ...
- AFNetworking配合Swift3.0请求数据
首先用桥接或pods将AFNetworking导入项目,在这不再赘述,然后创建一个单例NetWorkTools.swift 继承:AFHTTPSessionManager import UIKit i ...
- $Django 前后端之 跨域问题(同源策略) vue项目(axios跨域请求数据)
1 跨域问题(多个域之间的数据访问) #同源策略(ip port 协议全部相同) #本站的只能请求本站域名的数据 #CORS实现(跨域资源共享) #实现CORS通信的关键是服务器.只要服务器实现了CO ...
随机推荐
- python+ubuntu+selenium安装chrome和chromedriver
请确保selenium已经安装成功,没安装的可以pip install selenium 安装chrome 在终端输入 下载安装包 wget https://dl.google.com/linux/d ...
- 详细理解javascript中的强制类型转换
将值从一种类型转换为另一种类型通常称为类型转换,这是显式的情况:隐式的情况称为强制类型转换,JavaScript 中的强制类型转换总是返回标量基本类型值,如字符串.数字和布尔值. 如何理解: 类型转换 ...
- 项目笔记:导出Excel功能设置导出数据样式
/** * 导出-新导出 * * @return * @throws IOException */ @OperateLogAnn(type = OperateEnum.EXPORT, hibInter ...
- 使用老版本的java api提交hadoop作业
还是使用之前的单词计数的例子 自定义Mapper类 import java.io.IOException; import org.apache.hadoop.io.LongWritable; impo ...
- sql 查询重复的数据
select * from yryz_role_partner where user_id in (select user_id from yryz_role_partner group by use ...
- Binder与Servicede关联
Binder是Android上IPC的基础和关键.那么在使用过程中,大多数时候看到的是client与server的结构,即Server通过创建服务来向Client提供服务,Client则通过绑定到Bi ...
- Splay树(多操作)——POJ 3580 SuperMemo
相应POJ题目:点击打开链接 SuperMemo Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 11309 Accept ...
- Android学习(九) SharedPreferences
一.SharedPreferences:一种清醒的存储方式,基于XML存储key-value键值对方式的数据. SharedPreferences对象本身只能获取数据,而不能存储和修改数据,存储修改只 ...
- 已经入了vim的坑
一.移动光标 1.左移h.右移l.下移j.上移k 2.向下翻页ctrl + f,向上翻页ctrl + b 3.向下翻半页ctrl + d,向上翻半页ctrl + u 4.移动到行尾$,移动到行首0(数 ...
- 使用file_get_contents下载图片
<?php /* 当你在搭建网站时,从远程服务器下载某张图片并且将其保存在自己的服务器上,这一操作会经常用到.代码如下: */ $image = file_get_contents('h ...