全国咨询热线:18720358503

小程序开发解决方法_5分钟教你用nodeJS手写一个

类别:媒体报道 发布时间:2021-01-07 浏览人次:

5分钟教你用nodeJS手写一个mock数据服务器的方法       这篇文章主要介绍了5分钟教你用nodeJS手写一个mock数据服务器的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

对于前端开发者而言,javascript正扮演着越来越重要的地位,它不仅能为浏览器端赋能,在web服务器方面也有很大的价值(我们可以用nodeJS来写服务端代码,启动web服务器),因此本文所要描述的,便是javascript在服务端的应用。我将介绍如何使用nodeJS来搭建一个mock服务器,方便前端自定义mock数据请求,提高前端开发的主观能动性和对项目健壮性的探索。

我们将学到

koa基本使用 koa-router的基本用法 koa-logger的使用 glob支持文件遍历查寻 node几个核心api的使用 使用nodemon做自动重启

mock服务器基本设计思路

通过目录路径和服务端api的映射关系来实现我们的api访问,比如我们访问接口/api/article/122,我们只需要在mock服务器目录的api的article目录下,创建122.json文件即可,json文件的数据可以自定义,方便前端调试。

具体实现

1.搭建一个node服务

const Koa = require('koa');
const app = new Koa();
app.listen(3000)

2.注册路由 我们使用koa-router来实现后台服务的路由功能,并通过koa提供的上下文ctx将读取到的数据返回给前端:

const Koa = require('koa');
const Router = require('koa-router');
const app = new Koa();
const router = new Router({prefix: '/api'});
router.get('/name', (ctx, next) = {
 ctx.body = {
 name: 'xuxiaoxi'
 .use(router.routes())
 .use(router.allowedMethods());
app.listen(3000)

这样我们就能实现一个勉强能用的基本的后台api服务器了,当我们请求/api/name时,会返回相应的数据给前台,这一步是我们实现mock服务的关键一步,接下来我们具体来实现目录的遍历和api的自动注册。

3.自动注册api接口并返回数据 我们将在这个阶段实现api服务的自动注册,这里我们使用glob这个第三方模块来遍历目录,并通过node的fs模块读取api文件的数据并返回给前台。glob的使用很简单,感兴趣的朋友可以自行学习,这里就不做过多介绍了。具体实现如下:

const Koa = require('koa');
const Router = require('koa-router');
const glob = require("glob");
const { resolve } = require('path');
const fs = require('fs');
const app = new Koa();
const router = new Router({prefix: '/api'});
// 注册路由
glob.sync(resolve('./api', "**/*.json")).forEach((item, i) = {
 let apiJsonPath = item item.split('/api')[1];
 let apiPath = apiJsonPath.replace('.json', '');
 router.get(apiPath, (ctx, next) = {
 try {
 let jsonStr = fs.readFileSync(item).toString();
 ctx.body = {
 data: JSON.parse(jsonStr),
 state: 200,
 type: 'success' // 自定义响应体
 }catch(err) {
 ctx.throw('服务器错误', 500);
 .use(router.routes())
 .use(router.allowedMethods());
app.listen(3000);

添加控制台日志 我们使用koa-logger实现在终端打印node日志,方便调试,虽然这不是该文章的重点,但是对于想做node开发的前端从业者,还是很有必要了解的。

const logger = require('koa-logger')
app.use(logger());

这样,我们每个请求都会在终端打印出来。

路由映射文件的生成 该功能也不是本文的重点,但是会极大的方便前端开发者调试请求,因为如果api路径很长,我们需要一个个查找,但是有了这个map文件,我们只需要拷贝自动生成的路径即可。具体实现如下:

//...
const routerMap = {}; // 存放路由映射
// 注册路由
glob.sync(resolve('./api', "**/*.json")).forEach((item, i) = {
 // ...
 // 记录路由
 routerMap[apiJsonPath] = apiPath;
fs.writeFile('./routerMap.json', JSON.stringify(routerMap, null , 4), err = {
 if(!err) {
 console.log('路由地图生成成功!')
});

基本目录结构

完整代码

clone地址 github地址 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持凡科。


推荐阅读

小程序开发解决方法_5分钟教你用nodeJS手写一个

五分钟教你用nodeJS笔写一个mock数据信息网络服务器的方式 本文关键详细介绍了五分钟教你用nodeJS笔写一个mock数据信息网络服务器的方式,原文中根据实例编码详细介绍的十分详尽...

2021-01-07
微信小程序精准流量裂变方法:功能裂变玩法

微信小程序技术专业开发设计企业 技术性适用 手机微信微信小程序精确总流量裂变式方式:作用裂变式游戏玩法手机微信微信小程序精确总流量裂变式方式:作用裂变式游戏玩法编写...

2021-01-07
谈关于创建一个良好的关于我们页面的想法

1、让浏览者能随便的联络到你 在一些状况下,浏览者将会会出现大量的题型或要想掌握大量信息内容。根据将你的联络方法立即放到该网页页面能协助客户非常很是非常容易的联络到...

2021-01-07
广州凡科互联网科技股份有限公司招聘备案文员

招聘人数:22职位信息1、负责公司合同的审核和拟定;2、负责新品详情审核及网上店铺的巡查;3、负责产品设计稿件审核;4、负责商标查询和申请、专利查询和申请、条形码的申请和...

2021-01-07
商城企业网站建设-家俱企业网站建设的情况色该

黑白灰的背景色是网站建设的经典配色,这三种背景色经久不衰,不仅仅是因为能突出主要内容,而且网站使用这种背景色,风格极简含蓄的同时,也能包容其他设计元素的特色,流露...

2021-01-07
广州凡科互联网科技股份有限公司招聘平面设计

招聘人数:13职位信息定期拍摄产品,统筹店铺整体风格流向,店铺首页设计排版,围绕产品特点展开设计,做好详情页的差异化。主图创意的设计、主图辨析度及整体风格感觉。1.产品...

2021-01-06
X

400-8700-61718720358503
企业邮箱2639601583@qq.com
官方微信