当前位置: 首页 > Web前端 > HTML

使用nodejs+express搭建前端测试服务器

时间:2023-04-02 21:28:12 HTML

平时开发前端应用,如果没有现成的后端接口调试,又要保证前端的进度,怎么办?当然,方法还是有很多的。很多大咖分享了很多经验,我也会说说我常用的方法。请求本地数据文件将本地数据放在程序指定的目录下。在进行http请求时,使用get请求该目录下的指定文件。以jquery的ajax为例:postRequest:function(model,async){if(!model){returnnull;}if(Common.urlParams.d){url="../data/"+model.method+".json";model.type="GET";}else{url=service-api-path+model.method;//service-api-path是后端接口的公网地址}return$.ajax({async:(async==undefined||async)?true:false,url:url,type:model.type,dataType:"json",timeout:30000,data:model.params,beforeSend:function(x,settings){//todo..},complete:function(x,status){//todo..},错误:function(x,h,r){//todo}});}这个例子是在访问页面的时候给链接加上一个d参数。参数值任意,可调用本地数据。这种方式只能读取文件,内容比较死板,下面说说另一种使用nodejs+express搭建web服务器的方式,用nodejs搭建web服务器很简单,这也是很多开发者会使用nodejs作为中转服务的原因,下面介绍如何构建测试服务app.jsvarpath=require('路径'),express=require('express'),bodyParser=require('body-parser'),cookieParser=require('cookie-parser'),autoRoutes=require('express-自动路由'),server=require('./server');varapp=express();app.use(bodyParser.json());app.use(bodyParser.urlencoded({extended:false}));app.use(cookieParser());varroutes=autoRoutes(app);app.use(server);app.use(function(req,res,next){res.status(404);next({_code:404,_msg:'找不到页面'});});app.use(function(err,req,res,next){console.error(err);if(err._status)res.status(err._status);res.json({_code:err._code||1,_msg:err._msg||err});});varserver;if(!module.parent){varPORT=8989;console.log('[INFO]MsgboardRESTfulAPIlisteningatlocalhost:%s',PORT);server=app.listen(PORT);}else{module.exports=app;}server.jsvardbm=require('./dbm'),_=require("lodash");米odule.exports=function(req,res,next){letdata=[],params={},url=req.originalUrl,db=newdbm(`./db/${url.slice(url.lastIndexOf('/')+1,url.length)}.json`).read()data=_filter(db,req.body)res.json({timestamp:newDate().getTime(),msg:"查询成功",isSuccess:0,data:data})}const_filter=(db,obj)=>{if(!obj)returnreturn_.filter(db,o=>{returnobj.dateTime==o.dateTime})}dbm.jsvarfs=require('fs'),path=require('path');functiondbm(relativePath){this.db=path.resolve(__dirname,relativePath);}dbm.prototype._isAvailable=function(){returnfs.existsSync(this.db);};dbm.prototype.read=function(){if(!this._isAvailable())returnnull;varcontentInStr=fs.readFileSync(this.db,'utf-8'),内容;尝试{content=JSON.parse(contentInStr);}catch(e){//this.delDb();console.error('[ERR]JSON.parse失败,删除'+this.db);}返回内容||null;};dbm.prototype.save=function(data){varstringToSave=JSON.stringify(data);如果(!stringToSave)返回;飞秒。writeFileSync(this.db,stringToSave,'utf-8');};dbm.prototype.delDb=function(){try{fs.unlinkSync(this.db);}catch(e){console.error('数据库文件不存在');}};module.exports=dbm;demo.json[{"name":"jack","age":18,"id":"124443","dateTime":"20170101"},{"name":"tom","age":21,"id":"1232323","dateTime":"20170103"},{"name":"alix","age":22,"id":"123232323","dateTime":"20170102"}]至此,服务端基本搞定了。json文件的内容可以根据mongodb或者mysql的数据记录存储。引入lodash库来操作数组完成增删改查。也就是说,当然也可以扩展成真正的服务器。毕竟很多项目直接是nodejs开发的server的完整例子:https://github.com/dawnyu/node-simple-server.git原文:http://dawns.me/2017/05/05/%E7%94%A8nodejs+express%E6%90%AD%E5%BB%BA%E5%89%8D%E7%AB%AF%E6%B5%8B%E8%AF%95%E6%9C%8D%E5%8A%A1%E7%AB%AF/