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 相关文章推荐
jquery 的 $("#id").html() 无内容的解决方法
Jun 07 Javascript
jQuery自定义添加"$"与解决"$"冲突的方法
Jan 19 Javascript
JS清除选择内容的方法
Jan 29 Javascript
javascript中AJAX用法实例分析
Jan 30 Javascript
浅析javascript中的DOM
Mar 01 Javascript
jQuery预加载图片常用方法
Jun 15 Javascript
JS实现页面跳转参数不丢失的方法
Nov 28 Javascript
three.js快速入门【推荐】
Jan 21 Javascript
Vue实现侧边菜单栏手风琴效果实例代码
May 31 Javascript
vue js秒转天数小时分钟秒的实例代码
Aug 08 Javascript
js获取图片的base64编码并压缩
Dec 05 Javascript
原生js实现无缝轮播图效果
Jan 28 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中将ip地址转成十进制数的两种实用方法
2013/08/15 PHP
php对称加密算法示例
2014/05/07 PHP
PHP实现克鲁斯卡尔算法实例解析
2014/08/22 PHP
php获取textarea的值并处理回车换行的方法
2014/10/20 PHP
ThinkPHP里用U方法调用js文件实例
2015/06/18 PHP
PHP Filter过滤器全面解析
2016/08/09 PHP
PHP入门教程之正则表达式基本用法实例详解(正则匹配,搜索,分割等)
2016/09/11 PHP
PHP实现QQ登录的开原理和实现过程
2018/02/04 PHP
laravel-admin 在列表页添加自定义按钮的例子
2019/09/30 PHP
javascript 不间断的图片滚动并可点击
2010/01/15 Javascript
Jquery 的扩展方法总结
2011/10/01 Javascript
javascript模拟枚举的简单实例
2014/03/06 Javascript
node.js中格式化数字增加千位符的几种方法
2015/07/03 Javascript
Jquery ajax请求导出Excel表格的实现代码
2016/06/08 Javascript
jQuery webuploader分片上传大文件
2016/11/07 Javascript
Vue 单文件中的数据传递示例
2017/03/21 Javascript
简单介绍react redux的中间件的使用
2018/04/06 Javascript
微信 jssdk 签名错误invalid signature的解决方法
2019/01/14 Javascript
koa中间件核心(koa-compose)源码解读分析
2020/06/15 Javascript
JS实现电脑虚拟键盘的操作
2020/06/24 Javascript
[54:47]Liquid vs VP Supermajor决赛 BO 第五场 6.10
2018/07/05 DOTA
利用Python绘制MySQL数据图实现数据可视化
2015/03/30 Python
pandas求两个表格不相交的集合方法
2018/12/08 Python
将python图片转为二进制文本的实例
2019/01/24 Python
Python使用Slider组件实现调整曲线参数功能示例
2019/09/06 Python
Python3爬虫ChromeDriver的安装实例
2021/02/06 Python
HTML5 Canvas中绘制矩形实例
2015/01/01 HTML / CSS
AmazeUI 导航条的实现示例
2020/08/14 HTML / CSS
美国时尚大码女装购物网站:Avenue
2019/05/24 全球购物
CLR与IL分别是什么含义
2016/08/23 面试题
2014年国庆节庆祝建国65周年比赛演讲稿
2014/09/21 职场文书
高校师德师风自我剖析材料
2014/09/29 职场文书
湖南省党的群众路线教育实践活动总结会议新闻稿
2014/10/21 职场文书
课外活动总结
2015/02/04 职场文书
写作技巧:怎样写好一份优秀工作总结?
2019/08/14 职场文书
在Windows下安装配置CPU版的PyTorch的方法
2021/04/02 Python