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 继承机制的实现(待续)
May 18 Javascript
jQuery登陆判断简单实现代码
Apr 21 Javascript
JavaScript全排列的六种算法 具体实现
Jun 29 Javascript
jQuery控制的不同方向的滑动(向左、向右滑动等)
Jul 18 Javascript
JavaScript实现简单的tab选项卡切换
Jan 05 Javascript
微信QQ的二维码登录原理js代码解析
Jun 23 Javascript
jQuey将序列化对象在前台显示地实现代码(方法总结)
Dec 13 Javascript
详解jQuery lazyload 懒加载
Dec 19 Javascript
node.js中grunt和gulp的区别详解
Jul 17 Javascript
js 原生判断内容区域是否滚动到底部的实例代码
Nov 15 Javascript
在layui tab控件中载入外部html页面的方法
Sep 04 Javascript
微信小程序中限制激励式视频广告位显示次数(实现思路)
Dec 06 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
mysql 字段类型说明
2007/04/27 PHP
yii2中添加验证码的实现方法
2016/01/09 PHP
关于jquery动态增减控件的一些想法和小插件
2010/08/01 Javascript
不使用中间变量,交换int型的 a, b两个变量的值。
2010/10/29 Javascript
JavaScript内核之基本概念
2011/10/21 Javascript
JavaScript中的eval()函数详解
2013/08/22 Javascript
jQuery 属性选择器element[herf*='value']使用示例
2013/10/20 Javascript
js字符串转成JSON
2013/11/07 Javascript
jQuery实现的经典滑动门效果
2015/09/22 Javascript
Seajs 简易文档 提供简单、极致的模块化开发体验
2016/04/13 Javascript
jQuery实现为LI列表前3行设置样式的方法【2种方法】
2016/09/04 Javascript
JavaScript 数组的深度复制解析
2016/11/02 Javascript
Canvas实现动态的雪花效果
2017/02/13 Javascript
vue.extend实现alert模态框弹窗组件
2018/04/28 Javascript
vue项目base64字符串转图片的实现代码
2018/07/13 Javascript
JavaScript实现正则去除a标签并保留内容的方法【测试可用】
2018/07/18 Javascript
JavaScript设计模式之命令模式实例分析
2019/01/16 Javascript
node 文件上传接口的转发的实现
2019/09/23 Javascript
js实现日历
2020/11/07 Javascript
[05:46]2018完美盛典-《同梦共竞》
2018/12/17 DOTA
python基础教程之简单入门说明(变量和控制语言使用方法)
2014/03/25 Python
Python中的并发编程实例
2014/07/07 Python
Python字符串和字典相关操作的实例详解
2017/09/23 Python
Python实现正整数分解质因数操作示例
2018/08/01 Python
pymysql的简单封装代码实例
2020/01/08 Python
全球知名旅游社区法国站点:TripAdvisor法国
2016/08/03 全球购物
职业生涯规划书范文
2014/03/10 职场文书
亮剑精神演讲稿
2014/05/23 职场文书
中秋节国旗下演讲稿
2014/09/05 职场文书
基层党员四风问题自我剖析材料
2014/09/29 职场文书
公司人事任命通知
2015/04/20 职场文书
高中班主任培训心得体会
2016/01/07 职场文书
Python实战之用tkinter库做一个鼠标模拟点击器
2021/04/27 Python
简单介绍Python的第三方库yaml
2021/06/18 Python
Redis 常见使用场景
2021/08/30 Redis
Windows下用Nginx配置https服务器及反向代理的问题
2021/09/25 Servers