vue-cli搭配mockjs模拟可抓到的请求
程序员文章站
2022-03-18 17:08:20
...
vue-cli搭配mockjs模拟可抓到的请求
- 书写node服务,并返回mock的数据
- 正确配置vue-cli的proxy
- 正确配置命令行先启动步骤1的服务,再启动vue-cli
步骤说明
1. 在项目的任意路径创建mockServer.js(名称自定义)文件,书写node服务,并返回mock的数据,该文件的代码如下
/**
* 请用yarn或npm自行下载安装包
* 安装包包括 yarn add / npm install
* express (--save-dev)
* mockjs(--save-dev)
*/
let express = require('express') // 引入express
let Mock = require('mockjs') // 引入mock
let app = express() // 实例化express
// attendance/mbo/index 写自己的请求地址
app.use('/attendance/mbo/index', function (req, res) {
res.json(
Mock.mock({
'rspCode': '0',
'data|1-3': [
{
'key|+1': 1,
'mockTitle|1': ['肆无忌惮'],
'mockContent|1': [
'角色精湛主题略荒诞',
'理由太短 是让人不安',
'疑信参半 却无比期盼',
'你的惯犯 圆满',
'别让纠缠 显得 孤单'
],
'mockAction|1': ['下载', '试听', '喜欢']
}
]
})
)
})
app.listen('8090', () => {
console.log('监听端口 8090')
})
在进行继续下一步之前,先看如下package.json的一段代码
"scripts": {
"dev": "vue-cli-service serve",
"mock": "vue-cli-service serve",
"build.prod": "vue-cli-service build",
"build.test": "vue-cli-service build",
"mockServer": "node ./mockServer.js"
}
该代码为自定义命令行,我的做法是针对不同命令区别环境变量,进而进行打包、本地服务的开启,如:
yarn run dev //本地vue项目开启,全局的环境变量为dev
yarn run mock //本地vue项目开启,全局的环境变量为mock
yarn run build.prod //打包vue项目,全局的环境变量为prod,用于线上的生产代码
yarn run build.test //打包vue项目,全局的环境变量为test,用于线上的测试代码
yarn run mockServer //开启步骤1的8090本地服务端口
注: yarn换成npm也可以,最后实现的效果为随着命令1和命令2的切换,我可以请求本地mock数据和项目的测试数据
- 正确配置vue-cli的proxy,我的vue.config.js是这样写的
/**
* 本js代码主要解决问题如下
* 1.定义项目的全局变量
* 2.解决跨域
* 3.当全局变量为mock时,开启本地代理至http://localhost:8090,实现本地开启服务
* */
const webpack = require('webpack')
const original = JSON.parse(process.env.npm_config_argv).original
/**
* 根据如上图的运行命令获取环境变量
* 最后环境变量赋值给NODE_ENV
* */
const NODE_ENV = original.includes('dev') ? 'dev' : original.includes('mock') ? 'mock' : original[0].includes('.') ? original[0].split('.')[1] : original[1].split('.')[1]
/*
* 定义vue需要代理的服务地址,解决跨域问题
* 这里跟里环境变量,自定义target代理域名
*/
const target = NODE_ENV === 'mock' ? 'http://localhost:8090' : 'https://www.******'
module.exports = {
/*
* configureWebpack:利用webpack设置该项目的全局变量,webpack4.0以上支持该写法,高版本vue-cli已经集成了webpack4.0以上
* 以下代码设置全部变量为ENV 取值为NODE_ENV
*/
configureWebpack: config => {
config.plugins.push(
new webpack.DefinePlugin({
ENV: JSON.stringify(NODE_ENV)
}))
},
//proxy为项目设置代理,解决跨域
devServer: {
'proxy': {
'/attendance': {
target,
'changeOrigin': true
}
}
}
}
- 验证我们的服务及与项目配合使用
3.1 开启步骤1的服务 yarn run mockServer,在电脑地址栏中敲击地址http://localhost:8090/attendance/mbo/index,若浏览器有返回的数据,如下图,则证明本地数据可以正常访问了
3.2 开启本地mock模拟数据的vue项目,yarn run mock
3.3 项目中 数据请求,请求地址为attendance/mbo/index则可以请求本地的mock数据了。