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 相关文章推荐
Ajax+Json 级联菜单实现代码
Oct 27 Javascript
构造函数+原型模式构造js自定义对象(最通用)
May 12 Javascript
浅析js预加载/延迟加载
Sep 25 Javascript
探讨JavaScript中的Rest参数和参数默认值
Jul 29 Javascript
将JSON字符串转换成Map对象的方法
Nov 30 Javascript
一个炫酷的Bootstrap导航菜单
Dec 28 Javascript
原生js实现可爱糖果数字时间特效
Dec 30 Javascript
基于JavaScript实现活动倒计时效果
Apr 20 Javascript
详解AngularJS 路由 resolve用法
Apr 24 Javascript
详解angularJS+Ionic移动端图片上传的解决办法
Sep 13 Javascript
layer实现弹出层自动调节位置
Sep 05 Javascript
vue 验证码界面实现点击后标灰并设置div按钮不可点击状态
Oct 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
在任意字符集下正常显示网页的方法二(续)
2007/04/01 PHP
php 获得汉字拼音首字母的函数
2009/08/01 PHP
基于php-fpm 参数的深入理解
2013/06/03 PHP
jQuery中的RadioButton,input,CheckBox取值赋值实现代码
2014/02/18 PHP
php解决DOM乱码的方法示例代码
2016/11/20 PHP
js操作textarea方法集合封装(兼容IE,firefox)
2011/02/22 Javascript
jquery查找tr td 示例模拟
2014/05/08 Javascript
jQuery+html5实现div弹出层并遮罩背景
2015/04/15 Javascript
JSON字符串转JSON对象
2015/07/31 Javascript
jQuery事件的绑定、触发、及监听方法简单说明
2016/05/10 Javascript
Javascript中类式继承和原型式继承的实现方法和区别之处
2017/04/25 Javascript
JavaScript中Hoisting详解 (变量提升与函数声明提升)
2017/08/18 Javascript
深入了解query和params的使用区别
2019/06/24 Javascript
Vue开发环境中修改端口号的实现方法
2019/08/15 Javascript
[47:35]VP vs Pain 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/20 DOTA
[55:35]DOTA2-DPC中国联赛 正赛 CDEC vs Dragon BO3 第二场 1月22日
2021/03/11 DOTA
Python 第一步 hello world
2009/09/25 Python
在Python的框架中为MySQL实现restful接口的教程
2015/04/08 Python
python3抓取中文网页的方法
2015/07/28 Python
一个基于flask的web应用诞生 bootstrap框架美化(3)
2017/04/11 Python
python读取excel表格生成erlang数据
2017/08/26 Python
Python线性回归实战分析
2018/02/01 Python
Python基于滑动平均思想实现缺失数据填充的方法
2019/02/21 Python
基于python实现删除指定文件类型
2020/07/21 Python
Django使用django-simple-captcha做验证码的实现示例
2021/01/07 Python
美国成衣女装品牌:CHICO’S
2016/09/19 全球购物
巾帼文明岗申报材料
2014/05/01 职场文书
求职信的正确写法
2014/07/10 职场文书
党校毕业心得体会
2014/09/13 职场文书
业务员工作态度散漫检讨书
2014/11/02 职场文书
2015年发展党员工作总结报告
2015/03/31 职场文书
医药公司开票员岗位职责
2015/04/15 职场文书
指导教师推荐意见
2015/06/05 职场文书
小学数学新课改心得体会
2016/01/22 职场文书
python Tkinter模块使用方法详解
2022/04/07 Python
java开发双人五子棋游戏
2022/05/06 Java/Android