koa router 多文件引入的方法示例


Posted in Javascript onMay 22, 2019

背景

koa-router路由越来越多,api下的router都要使用下面的方式引入,怎么才能方便快捷的将api下的所有文件都引入呢
这次记录的就是如果将koa-router 一次性循环引入

const book = require('./app/api/v1/book')
const classic = require('./app/api/v1/classic')
// ...
app.use(book.routes(), book.allowedMethods())
app.use(classic.routes(), classic.allowedMethods())
//...

文件目录

koa-demo/
 |-api/
  |-books.js
  |-classic.js
  |-users.js
  |-articles.js
 |-package.json
 |-app.js

传统方式引入router

app.js

const Koa = require('koa')
const app = new Koa()
const book = require('./app/api/v1/book')
const classic = require('./app/api/v1/classic')

app.use(book.routes(), book.allowedMethods())
app.use(classic.routes(), classic.allowedMethods())

app.listen(3333)

require-directory引入

require-directory用来递归地迭代指定的目录,并返回这些模块。

github

随着文件增加,如何高效的开发就是我们要追求的事情了

首先

npm install require-directory

app.js

const Koa = require('koa')
const app = new Koa()
const Router = require('koa-router')
// 使用require-directory加载路由文件夹下的所有router
const requireDirectory = require('require-directory')

// 将所有的路由加载上,自动加载代码
const modules = requireDirectory(module, './api', { visit: whenLoadModule })

function whenLoadModule(obj) {
 if (obj instanceof Router) {
 app.use(obj.routes(), obj.allowedMethods())
 }
}

app.listen(3333)

路由文件就按照传统的方式写就行

books.js

const Router = require('koa-router')
const router = new Router()

router.get('/v1/book/latest', (ctx, next) => {
 ctx.body = {
  key: 'book'
 }
})

module.exports = router

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

Javascript 相关文章推荐
qq悬浮代码(兼容各个浏览器)
Jan 29 Javascript
Javascript缓存API
Jun 14 Javascript
jQuery解决input元素的blur事件和其他非表单元素的click事件冲突问题
Aug 15 Javascript
setTimeout学习小结
Feb 08 Javascript
arcgis for js栅格图层叠加(Raster Layer)问题
Nov 22 Javascript
理解Koa2中的async&await的用法
Feb 05 Javascript
Element-UI Table组件上添加列拖拽效果实现方法
Apr 14 Javascript
详解Vue+axios+Node+express实现文件上传(用户头像上传)
Aug 10 Javascript
vue填坑之webpack run build 静态资源找不到的解决方法
Sep 03 Javascript
js计算两个日期间的天数月的实例代码
Sep 20 Javascript
javascript实现的字符串转换成数组操作示例
Jun 13 Javascript
微信小程序自定义支持图片的弹窗
Dec 21 Javascript
微信小程序template模板与component组件的区别和使用详解
May 22 #Javascript
微信小程序+腾讯地图开发实现路径规划绘制
May 22 #Javascript
详解wepy开发小程序踩过的坑(小结)
May 22 #Javascript
vue项目中mock.js的使用及基本用法
May 22 #Javascript
JavaScript函数式编程(Functional Programming)组合函数(Composition)用法分析
May 22 #Javascript
vue以组件或者插件的形式实现throttle或者debounce
May 22 #Javascript
JavaScript函数式编程(Functional Programming)箭头函数(Arrow functions)用法分析
May 22 #Javascript
You might like
php SQL防注入代码集合
2008/04/25 PHP
PHP实现的自定义图像居中裁剪函数示例【测试可用】
2017/08/11 PHP
Laravel框架创建路由的方法详解
2019/09/04 PHP
JavaScript 的方法重载效果
2009/08/07 Javascript
js常用排序实现代码
2010/12/28 Javascript
Jsonp 跨域的原理以及Jquery的解决方案
2011/06/27 Javascript
浅谈Javascript如何实现匀速运动
2014/12/19 Javascript
javascript计时器详解
2015/02/28 Javascript
使用jQuery Ajax 请求webservice来实现更简练的Ajax
2016/08/04 Javascript
原生js实现tab选项卡切换
2020/03/23 Javascript
JavaScript实现简单的日历效果
2016/09/25 Javascript
js实现带简单弹性运动的导航条
2017/02/22 Javascript
极简主义法编写JavaScript类
2017/11/02 Javascript
vue 将页面公用的头部组件化的方法
2017/12/18 Javascript
基于Koa2写个脚手架模拟接口服务的方法
2018/11/27 Javascript
js中console在一行内打印字符串和对象的方法
2019/09/10 Javascript
Vue图片浏览组件v-viewer用法分析【支持旋转、缩放、翻转等操作】
2019/11/04 Javascript
jQuery实现滑动星星评分效果(每日分享)
2019/11/13 jQuery
跟老齐学Python之不要红头文件(1)
2014/09/28 Python
浅谈Python批处理文件夹中的txt文件
2019/03/11 Python
Python分割训练集和测试集的方法示例
2019/09/19 Python
Python实现结构体代码实例
2020/02/10 Python
解决jupyter notebook 出现In[*]的问题
2020/04/13 Python
jupyter 导入csv文件方式
2020/04/21 Python
Jeep牧马人、切诺基和自由人零配件:4 Wheel Drive Hardware
2017/07/02 全球购物
美国眼镜网:GlassesUSA
2017/09/07 全球购物
网络教育毕业生自我鉴定
2013/10/10 职场文书
工作失职造成投诉的检讨书范文
2014/10/05 职场文书
谢师宴答谢词
2015/01/05 职场文书
为自己工作观后感
2015/06/11 职场文书
关于运动会的宣传稿
2015/07/23 职场文书
学会感恩主题班会
2015/08/12 职场文书
2016年国庆节宣传标语
2015/11/25 职场文书
2019开业庆典剪彩仪式主持词!
2019/07/22 职场文书
nginx配置ssl实现https的方法示例
2021/03/31 Servers
PostgreSQL逻辑复制解密原理解析
2022/09/23 PostgreSQL