前言:
大多数时候,前端会和后端同时进行开发,即在我们开发完页面的时候,很可能还不能立马进入联调阶段,这个时候,为了保证我们接口的有效性和代码的功能完整,我们可能需要模拟数据。
模拟数据方法
1.通过js变量模拟后台数据
优点:不需要服务器
缺点:需要造很多变量,同时还要将变量在我们的有效代码中使用,最后还得删除
2.通过ajax请求json文件
优点:只需要配置路径,就可以访问,进入联调阶段不用修改大量的js代码
缺点:ajax存在跨域问题,通常无法请求本地文件,即使火狐也存在不能访问不同文件目录下的json文件,通常需要通过ide或者自己手动启动服务
3.用nodejs自己写一个专门用来发送请求的服务,不包含业务逻辑
优点:前端的代码进入联调阶段只需要修改一个basePath,所有的接口名字都可以和约定好的路径保持一致,可以测试post请求,模拟网络环境
缺点:自己要写一个后台
1、2两种模拟数据的方式适合用来做demo,但是如果做得是上线项目,我们还是推荐使用自己搭建一个node后台
1.准备node环境、npm/cnpm
2.安装express、mockjs
3.创建服务端文件server.js,引入相关模块
let express = require('express'); //引入express模块 let Mock = require('mockjs'); //引入mock模块 let app = express(); //实例化express
4.配置接口路由,设置监听端口
/** * 配置test.action路由 * @param {[type]} req [客户端发过来的请求所带数据] * @param {[type]} res [服务端的相应对象,可使用res.send返回数据,res.json返回json数据,res.down返回下载文件] */ app.all('/test.action', function(req, res) { res.send('hello world'); }); /** * 监听8090端口 */ app.listen('8090');
此时我们直接访问http://localhost:8090/test.action,就可以直接在界面看到'hello world'文字
5.使用mockjs返回格式化json数据
app.all('/test.action', function(req, res) { /** * mockjs中属性名‘|'符号后面的属性为随机属性,数组对象后面的随机属性为随机数组数量,正则表达式表示随机规则,+1代表自增 */ res.json(Mock.mock({ "status": 200, "data|1-9": [{ "name|5-8": /[a-zA-Z]/, "id|+1": 1, "value|0-500": 20 }] })); });
此时我们再访问页面数据,我们就可以得到一份随机的json数据
6.创建模拟数据文件夹testData,创建模拟数据json文件(注意:json文件中不能使用正则,且对象属性必须为双引号字符串)
7.遍历模拟数据文件,生成对应路由
/*readdir读取目录下所有文件*/ fs.readdir('./testData', function(err, files) { if(err) { console.log(err); } else { /*成功读取文件,取得文件名,拼接生成对应action,监听对应接口并返回对应文件数据*/ files.forEach(function(v, i) { app.all(`/${v.replace(/json/, 'action')}`, function(req, res) { fs.readFile(`./testData/${v}`, 'utf-8', function(err, data) { if(err) { console.log(err); } else { res.json(Mock.mock(JSON.parse(data))); } }) }) }) } })
至此,我们的node服务器已经搭建成功,使用node server.js运行服务器,我们就可以直接在前端访问接口,但是如果只是单纯的生成后台,前端页面不通过后台进行访问的话,存在跨域问题,如果需要解决,可以在后台添加跨域请求
/*为app添加中间件处理跨域请求*/ app.use(function(req, res, next) { res.header("Access-Control-Allow-Origin", "*"); res.header('Access-Control-Allow-Methods', 'PUT, GET, POST, DELETE, OPTIONS'); res.header("Access-Control-Allow-Headers", "X-Requested-With"); res.header('Access-Control-Allow-Headers', 'Content-Type'); next(); });
ps:如果mock需要使用正则,请单独配置路由进行处理,express和mockjs更多指令,请查阅官网api
总结
以上是小编给大家介绍的express+mockjs实现模拟后台数据发送功能,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!
本文向大家介绍Vue 使用formData方式向后台发送数据的实现,包括了Vue 使用formData方式向后台发送数据的实现的使用技巧和注意事项,需要的朋友参考一下 很多时候在使用form向后台发送数据的时候,并不需要使用到表单组件。 例如时间戳、ip等,这个时候除了ajax之外,还可以使用HTML5的一个全新方法FormData;在input[type = file]的文件类型中,很多时候想要
本文向大家介绍python实现邮件发送功能,包括了python实现邮件发送功能的使用技巧和注意事项,需要的朋友参考一下 什么是POP3、SMTP和MAP? POP3是Post Office Protocol 3的简称,即邮局协议的第三个版本,他是规定怎样将个人计算机连接到Internet的邮件服务器和下载电子邮件的协议。它是因特网电子邮件的第一个离线协议的标准。POP3允许用户从服务器上把邮件存储
本文向大家介绍JavaWeb实现邮件发送功能,包括了JavaWeb实现邮件发送功能的使用技巧和注意事项,需要的朋友参考一下 基于JavaWeb的邮件发送功能(多附件),供大家参考,具体内容如下 本次学习主要目的是为了测试由QQ邮箱发送到任意一个有效邮箱的功能实现,附带多个附件。学习者可以借鉴其他邮箱的格式,梳理一下要写的内容。项目把文件内容放到了MimeMessage 邮件对象里,其中包含了如发件
本文向大家介绍Spring实现邮件发送功能,包括了Spring实现邮件发送功能的使用技巧和注意事项,需要的朋友参考一下 前言:以前都是直接用Java自带的邮件工具发送邮件,现在Spring帮我们做了封装,提供了更好用更简单的发送邮件工具JavaMailSender,关于邮件服务器的设置就不在这里说了,直接去QQ邮箱设置下就好,下面看下主要的步骤: 步骤一、添加发送邮件相关Maven依赖 步骤二、
本文向大家介绍java实现发送邮件功能,包括了java实现发送邮件功能的使用技巧和注意事项,需要的朋友参考一下 前言 前段时间做一个紧急的功能,其中有部分需求是需要发邮件通知;通过查阅以及实验,很快的写了个发送邮件的功能;现在整理一下记录下来。 发送邮件 一、在pom中引入相关依赖 二、发送邮件的工具类 三、遇到的坑 在本地测试没有问题;我们的测试服务在阿里云上,阿里云对发送的时候是失败;追踪日志
本文向大家介绍Django实现发送邮件功能,包括了Django实现发送邮件功能的使用技巧和注意事项,需要的朋友参考一下 1)首先注册一个邮箱,这里以163邮箱为例 2)注册之后登录,进行如下修改 找到设置,设置一个授权码,授权码的目的仅仅是让你有权限发邮件,但是不能登录到邮箱进行修改,发送邮件时,可以代替密码 3)然后在项目里的配置文件s