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 相关文章推荐
xtree.js 代码
Mar 13 Javascript
深入理解JavaScript作用域和作用域链
Oct 21 Javascript
JS基于Ajax实现的网页Loading效果代码
Oct 27 Javascript
javascript实现移动端上的触屏拖拽功能
Mar 04 Javascript
vue如何引用其他组件(css和js)
Apr 13 Javascript
使用cropper.js裁剪头像的实例代码
Sep 29 Javascript
vue2 router 动态传参,多个参数的实例
Nov 10 Javascript
微信小程序开发之自定义tabBar的实现
Sep 06 Javascript
vue+layui实现select动态加载后台数据的例子
Sep 20 Javascript
vue实现树形结构样式和功能的实例代码
Oct 15 Javascript
微信小程序文章列表功能完整实例
Jun 03 Javascript
解决vue中使用less/sass及使用中遇到无效的问题
Oct 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
广播爱好者需要了解的天线知识
2021/03/01 无线电
Drupal简体中文语言包安装教程
2014/09/27 PHP
php基于socket实现SMTP发送邮件的方法
2015/03/05 PHP
PHP实现网页内容html标签补全和过滤的方法小结【2种方法】
2017/04/27 PHP
用javascript实现计算两个日期的间隔天数
2007/08/14 Javascript
当自定义数据属性为json格式字符串时jQuery的data api问题探讨
2013/02/18 Javascript
页面加载完成后再执行JS的jquery写法以及区别说明
2014/02/22 Javascript
Javascript 绘制 sin 曲线过程附图
2014/08/21 Javascript
NodeJS中利用Promise来封装异步函数
2015/02/25 NodeJs
详解JavaScript中的Unescape()和String() 函数
2015/11/09 Javascript
jQuery插件zTree实现清空选中第一个节点所有子节点的方法
2017/03/08 Javascript
js获取一组日期中最近连续的天数
2017/05/25 Javascript
利用node.js爬取指定排名网站的JS引用库详解
2017/07/25 Javascript
JavaScript简单实现合并两个Json对象的方法示例
2017/10/16 Javascript
JavaScript设计模式之单例模式简单实例教程
2018/07/02 Javascript
解决微信小程序防止无法回到主页的问题
2018/09/28 Javascript
JS判断用户用的哪个浏览器实例详解
2018/10/09 Javascript
Vue.js 中 axios 跨域访问错误问题及解决方法
2018/11/21 Javascript
JQuery获取元素尺寸、位置及页面滚动事件应用示例
2019/05/14 jQuery
理解Proxy及使用Proxy实现vue数据双向绑定操作
2020/07/18 Javascript
基于jQuery拖拽事件的封装
2020/11/29 jQuery
[14:24]Optic Gaming vs PSG LGD BO3
2018/06/07 DOTA
python实现Floyd算法
2018/01/03 Python
Tensorflow卷积神经网络实例进阶
2018/05/24 Python
python版opencv摄像头人脸实时检测方法
2018/08/03 Python
基于Python实现人脸自动戴口罩系统
2020/02/06 Python
如何解决安装python3.6.1失败
2020/07/01 Python
canvas实现漂亮的下雨效果的示例
2018/04/18 HTML / CSS
机械绘图员岗位职责
2013/11/19 职场文书
期末考试动员演讲稿
2014/01/10 职场文书
给学校的建议书范文
2014/05/15 职场文书
教师演讲稿大全
2014/05/16 职场文书
环保小标语
2014/06/13 职场文书
2015年餐厅服务员工作总结
2015/04/23 职场文书
汉语拼音教学反思
2016/02/22 职场文书
sqlserver2017共享功能目录路径不可改的解决方法
2021/04/16 SQL Server