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 相关文章推荐
Javascript的IE和Firefox兼容性汇编
Jul 01 Javascript
基于SVG的web页面图形绘制API介绍及编程演示
Jun 28 Javascript
在JS中解析HTML字符串示例代码
Apr 16 Javascript
JavaScript数据类型之基本类型和引用类型的值
Apr 01 Javascript
JS随机调用指定函数的方法
Jul 01 Javascript
AngularJS入门教程之模块化操作用法示例
Nov 02 Javascript
AngularJS实现tab选项卡的方法详解
Jul 05 Javascript
JavaScript 预解析的4种实现方法解析
Sep 03 Javascript
基于vue+uniapp直播项目实现uni-app仿抖音/陌陌直播室功能
Nov 12 Javascript
Vue实现仿iPhone悬浮球的示例代码
Mar 13 Javascript
Vue 基于 vuedraggable 实现选中、拖拽、排序效果
May 18 Javascript
小程序实现列表倒计时功能
Jan 29 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中用数组的方法设置cookies
2011/04/21 PHP
thinkPHP多语言切换设置方法详解
2016/11/11 PHP
弹出模态框modal的实现方法及实例
2017/09/19 PHP
将CKfinder整合进CKEditor3.0的新方法
2010/01/10 Javascript
Textarea根据内容自适应高度
2013/10/28 Javascript
JavaScript获取table中某一列的值的方法
2014/05/06 Javascript
node.js中的fs.realpath方法使用说明
2014/12/16 Javascript
JS实现网页Div层Clone拖拽效果
2015/09/26 Javascript
js获取url传值的方法
2015/12/18 Javascript
jquery获取select选中值的方法分析
2015/12/22 Javascript
JS 数组随机洗牌的实例代码
2018/09/12 Javascript
vue前后分离调起微信支付
2019/07/29 Javascript
一键搞定python连接mysql驱动有关问题(windows版本)
2016/04/23 Python
利用numpy和pandas处理csv文件中的时间方法
2018/04/19 Python
python实现抖音视频批量下载
2018/06/20 Python
对python文件读写的缓冲行为详解
2019/02/13 Python
详解python中__name__的意义以及作用
2019/08/07 Python
Python3使用xml.dom.minidom和xml.etree模块儿解析xml文件封装函数的方法
2019/09/23 Python
如何实现在jupyter notebook中播放视频(不停地展示图片)
2020/04/23 Python
Python应用实现处理excel数据过程解析
2020/06/19 Python
CSS3+DIV实现漂亮的动画彩色标签
2016/06/16 HTML / CSS
CSS3轻松实现圆角效果
2017/11/09 HTML / CSS
CSS3标注引用的出处和来源的方法
2020/02/25 HTML / CSS
SISLEY希思黎官方旗舰店:享誉全球的奢华植物美容品牌
2018/04/25 全球购物
当我正在为表建立索引的时候,SQL Server 会禁止对表的访问吗
2014/04/28 面试题
初三政治教学反思
2014/01/30 职场文书
小班重阳节活动方案
2014/02/08 职场文书
组织鉴定材料
2014/06/02 职场文书
课外科技活动总结
2014/08/27 职场文书
实习生工作证明范本
2014/09/14 职场文书
2014年班级工作总结范文
2014/12/23 职场文书
新员工试用期自我评价
2015/03/10 职场文书
大学组织委员竞选稿
2015/11/21 职场文书
子女赡养老人协议书
2016/03/23 职场文书
奖学金发言稿(范文)
2019/08/21 职场文书
使用feign服务调用添加Header参数
2021/06/23 Java/Android