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 Timer实现代码
Feb 17 Javascript
子窗体与父窗体传值示例js代码
Aug 01 Javascript
js中方法重载如何实现?以及函数的参数问题
Aug 01 Javascript
再探JavaScript作用域
Sep 24 Javascript
jQuery+jsp下拉框联动获取本地数据的方法(附源码)
Dec 03 Javascript
js ajaxfileupload.js上传报错的解决方法
May 05 Javascript
Angular使用 ng-img-max 调整浏览器中的图片的示例代码
Aug 17 Javascript
jQuery ajax读取本地json文件的实例
Oct 31 jQuery
JS中精巧的自动柯里化实现方法
Dec 12 Javascript
利用vscode调试编译后的js代码详解
May 14 Javascript
JavaScript仿京东秒杀倒计时
Mar 17 Javascript
前端框架ECharts dataset对数据可视化的高级管理
Dec 24 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 更新数据库中断的解决方法
2009/06/05 PHP
使用php+apc实现上传进度条且在IE7下不显示的问题解决方法
2013/04/25 PHP
编译php 5.2.14+fpm+memcached(具体操作详解)
2013/06/18 PHP
php有道翻译api调用方法实例
2014/12/22 PHP
php中ob_flush函数和flush函数用法分析
2015/03/18 PHP
Windows下PHP开发环境搭建教程(Apache+PHP+MySQL)
2016/06/13 PHP
asp.net+js 实现无刷新上传解析csv文件的代码
2010/05/17 Javascript
JQuery EasyUI 对话框的使用方法
2010/10/24 Javascript
javascript复制对象使用说明
2011/06/28 Javascript
javascript操作html控件实例(javascript添加html)
2013/12/02 Javascript
jQuery中last()方法用法实例
2015/01/06 Javascript
jQuery实现dialog设置focus焦点的方法
2015/06/10 Javascript
Javascript编写俄罗斯方块思路及实例
2015/07/07 Javascript
scroll事件实现监控滚动条并分页显示(zepto.js)
2016/12/18 Javascript
基于jQuery代码实现圆形菜单展开收缩效果
2017/02/13 Javascript
Bootstrap弹出框之自定义悬停框标题、内容和样式示例代码
2017/07/11 Javascript
requireJS模块化实现返回顶部功能的方法详解
2017/10/16 Javascript
vue cli升级webapck4总结
2018/04/04 Javascript
jQuery无冲突模式详解
2019/01/17 jQuery
Vue中使用canvas方法总结
2019/02/12 Javascript
手挽手带你学React之React-router4.x的使用
2019/02/14 Javascript
react高阶组件添加和删除props
2019/04/26 Javascript
[34:39]DOTA2上海特级锦标赛主赛事日 - 4 败者组第四轮#1COL VS EG第二局
2016/03/05 DOTA
[59:15]EG vs LGD 2018国际邀请赛淘汰赛BO3 第一场 8.26
2018/08/29 DOTA
django实现前后台交互实例
2017/08/07 Python
Python利用公共键如何对字典列表进行排序详解
2018/05/19 Python
Python实现的文轩网爬虫完整示例
2019/05/16 Python
Selenium 滚动页面至元素可见的方法
2020/03/18 Python
CSS3实现彩色进度条动画的示例
2020/10/29 HTML / CSS
HQhair美国/加拿大:英国化妆品、美容及美发产品商城
2019/04/15 全球购物
List、Map、Set三个接口,存取元素时,各有什么特点?
2015/09/27 面试题
五年级语文教学反思
2014/01/30 职场文书
道路建设实施方案
2014/03/18 职场文书
2015年光棍节活动总结
2015/03/24 职场文书
“学党章、守党纪、讲党规”学习心得体会
2016/01/14 职场文书
会计手工模拟做账心得体会
2016/01/22 职场文书