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 相关文章推荐
ie下$.getJSON出现问题的解决方法
Feb 12 Javascript
浅谈重写window对象的方法
Dec 29 Javascript
jQuery源码解读之removeClass()方法分析
Feb 20 Javascript
vuejs动态组件给子组件传递数据的方法详解
Sep 09 Javascript
js实现table添加行tr、删除行tr、清空行tr的简单实例
Oct 15 Javascript
bootstrap switch开关组件使用方法详解
Aug 22 Javascript
前端必备插件之纯原生JS的瀑布流插件Macy.js
Nov 22 Javascript
解决vue中对象属性改变视图不更新的问题
Feb 23 Javascript
详解操作虚拟dom模拟react视图渲染
Jul 25 Javascript
基于Element的组件改造的树形选择器(树形下拉框)
Feb 27 Javascript
详解JavaScript 作用域
Jul 14 Javascript
addEventListener()和removeEventListener()追加事件和删除追加事件
Dec 04 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取进制余数函数代码
2012/01/19 PHP
浅析Yii2 gridview实现批量删除教程
2016/04/22 PHP
PHP-CGI远程代码执行漏洞分析与防范
2017/05/07 PHP
PHP通过get方法获得form表单数据方法总结
2018/09/12 PHP
Laravel5.4框架中视图共享数据的方法详解
2019/09/05 PHP
兼容Mozilla必须知道的知识。
2007/01/09 Javascript
JavaScript While 循环基础教程
2007/04/05 Javascript
用JS实现3D球状标签云示例代码
2013/12/01 Javascript
JavaScript AJAX之惰性载入函数
2014/08/27 Javascript
jQuery使用之标记元素属性用法实例
2015/01/19 Javascript
跟我学习javascript的全局变量
2015/11/16 Javascript
JavaScript实现点击按钮字体放大、缩小
2016/02/29 Javascript
小程序中canvas的drawImage方法参数使用详解
2019/07/04 Javascript
vue中添加与删除关键字搜索功能
2019/10/12 Javascript
用云开发Cloudbase实现小程序多图片内容安全监测的代码详解
2020/06/07 Javascript
python基于pygame实现响应游戏中事件的方法(附源码)
2015/11/11 Python
简单实现python爬虫功能
2015/12/31 Python
Python排序搜索基本算法之冒泡排序实例分析
2017/12/09 Python
Python实现PS滤镜功能之波浪特效示例
2018/01/26 Python
Python selenium抓取微博内容的示例代码
2018/05/17 Python
对python中for、if、while的区别与比较方法
2018/06/25 Python
python os.path模块常用方法实例详解
2018/09/16 Python
配置 Pycharm 默认 Test runner 的图文教程
2018/11/30 Python
Python实现字符型图片验证码识别完整过程详解
2019/05/10 Python
Python中模块(Module)和包(Package)的区别详解
2019/08/07 Python
pytorch之ImageFolder使用详解
2020/01/06 Python
你应该知道的Python3.6、3.7、3.8新特性小结
2020/05/12 Python
keras中的loss、optimizer、metrics用法
2020/06/15 Python
opencv 图像加法与图像融合的实现代码
2020/07/08 Python
HealthElement海外旗舰店:新西兰大卖场
2018/02/23 全球购物
研发工程师的岗位职责
2013/11/18 职场文书
建筑文秘专业个人求职信范文
2013/12/28 职场文书
干部考核工作总结2015
2015/07/24 职场文书
关于职业道德的心得体会
2016/01/18 职场文书
导游词之北京明十三陵
2019/10/28 职场文书
Win11 Beta 预览版 22621.575 和 22622.575更新补丁KB5016694发布(附更新内容大全)
2022/08/14 数码科技