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 批量上传图片实现代码
Jan 28 Javascript
cloudgamer出品ImageZoom 图片放大效果
Apr 01 Javascript
jQuery 阴影插件代码分享
Jan 09 Javascript
使用javascript实现Iframe自适应高度
Dec 24 Javascript
javascript实现全角半角检测的方法
Jul 23 Javascript
jQuery双向列表选择器DIV模拟版
Nov 01 Javascript
详解用原生JavaScript实现jQuery的某些简单功能
Dec 19 Javascript
详解微信小程序input标签正则初体验
Aug 18 Javascript
浅谈Vue 性能优化之深挖数组
Dec 11 Javascript
Mint UI实现A-Z字母排序的城市选择列表
Dec 28 Javascript
Echarts动态加载多条折线图的实现代码
May 24 Javascript
es6中使用map简化复杂条件判断操作实例详解
Feb 19 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 magic_quotes_gpc的一点认识与分析
2008/08/18 PHP
PHP使用CURL_MULTI实现多线程采集的例子
2014/07/29 PHP
PHP设计模式之工厂模式详解
2017/10/24 PHP
TP5框架实现上传多张图片的方法分析
2020/03/29 PHP
用js得到网页中所有的div的id
2020/10/19 Javascript
JavaScript事件列表解说
2006/12/22 Javascript
浅析JQuery UI Dialog的样式设置问题
2013/12/18 Javascript
JavaScript中输出标签的方法
2014/08/27 Javascript
JavaScript中String.match()方法的使用详解
2015/06/06 Javascript
JQuery控制DIV的选取实现方法
2016/09/18 Javascript
AngularJs 利用百度地图API 定位当前位置 获取地址信息
2017/01/18 Javascript
浅析jsopn跨域请求原理及cors(跨域资源共享)的完美解决方法
2017/02/06 Javascript
纯js仿淘宝京东商品放大镜功能
2017/03/02 Javascript
深究AngularJS之ui-router详解
2017/06/13 Javascript
详解React Native网络请求fetch简单封装
2017/08/10 Javascript
vue.js做一个简单的编辑菜谱功能
2018/05/08 Javascript
[42:39]老党炸弹人试玩视频
2014/09/03 DOTA
[03:43]TI9战队采访——PSG.LGD
2019/08/22 DOTA
Python入门篇之面向对象
2014/10/20 Python
python基于pygame实现响应游戏中事件的方法(附源码)
2015/11/11 Python
深入理解Django的中间件middleware
2018/03/14 Python
python提取图像的名字*.jpg到txt文本的方法
2018/05/10 Python
python实现周期方波信号频谱图
2018/07/21 Python
Python字典添加,删除,查询等相关操作方法详解
2020/02/07 Python
PyCharm GUI界面开发和exe文件生成的实现
2020/03/04 Python
利用三角函数在canvas上画虚线的方法
2018/01/11 HTML / CSS
Canvas环形饼图与手势控制的实现代码
2019/11/08 HTML / CSS
Falconeri美国官网:由羊绒和羊毛制成的针织服装
2018/04/08 全球购物
中国领先的汽车保养服务平台:途虎养车
2019/10/18 全球购物
美国室内盆栽植物购买网站:Plants.com
2020/04/24 全球购物
新西兰最大的连锁超市:Countdown
2020/06/04 全球购物
大三自我鉴定范文
2013/10/05 职场文书
医学生自我评价
2014/01/27 职场文书
社区义诊活动总结
2014/04/30 职场文书
css3 filter属性的使用简介
2021/03/31 HTML / CSS
MySQL创建索引需要了解的
2021/04/08 MySQL