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 FormatNumber函数实现方法
Dec 30 Javascript
JavaScript实现GriwView单列全选(自写代码)
May 13 Javascript
使用JavaScript修改浏览器URL地址栏的实现代码
Oct 21 Javascript
jQuery层级选择器用法分析
Feb 10 Javascript
纯JavaScript实现的兼容各浏览器的添加和移除事件封装
Mar 28 Javascript
JavaScript图片轮播代码分享
Jul 31 Javascript
在javascript中使用com组件的简单实现方法
Aug 17 Javascript
AngularJS实现动态添加Option的方法
May 17 Javascript
jQuery异步提交表单实例
May 30 jQuery
vue toggle做一个点击切换class(实例讲解)
Mar 13 Javascript
JavaScript数组去重算法实例小结
May 07 Javascript
vue项目打包为APP,静态资源正常显示,但API请求不到数据的操作
Sep 12 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中++i 与 i++ 的区别
2012/08/08 PHP
WIN8.1下搭建PHP5.6环境
2015/04/29 PHP
PHP实现清除wordpress里恶意代码
2015/10/21 PHP
js 返回时间戳所对应的具体时间
2010/07/20 Javascript
关于document.cookie的使用javascript
2010/10/29 Javascript
javascript实现tabs选项卡切换效果(扩展版)
2013/03/19 Javascript
javascript实现控制浏览器全屏
2015/03/30 Javascript
javascript 动态修改css样式方法汇总(四种方法)
2015/08/27 Javascript
Node.js 条形码识别程序构建思路详解
2016/02/14 Javascript
DataTables+BootStrap组合使用Ajax来获取数据并且动态加载dom的方法(排序,过滤,分页等)
2016/11/09 Javascript
JavaScript日期选择功能示例
2017/01/16 Javascript
mac上node.js环境的安装测试
2017/07/03 Javascript
webpack配置sass模块的加载的方法
2017/07/30 Javascript
vue-cli 2.*中导入公共less文件的方法步骤
2018/11/22 Javascript
JavaScript中的回调函数实例讲解
2019/01/27 Javascript
Vue  webpack 项目自动打包压缩成zip文件的方法
2019/07/24 Javascript
微信小程序swiper禁止用户手动滑动代码实例
2019/08/23 Javascript
js函数柯里化的方法和作用实例分析
2020/04/11 Javascript
Python实现获取前100组勾股数的方法示例
2018/05/04 Python
python 同时运行多个程序的实例
2019/01/07 Python
python 弹窗提示警告框MessageBox的实例
2019/06/18 Python
Python3操作MongoDB增册改查等方法详解
2020/02/10 Python
浅谈sklearn中predict与predict_proba区别
2020/06/28 Python
Python操作MySQL数据库的示例代码
2020/07/13 Python
HTML5的postMessage的使用手册
2018/12/19 HTML / CSS
使用canvas实现黑客帝国数字雨效果
2020/01/02 HTML / CSS
SheIn俄罗斯:时尚女装网上商店
2017/02/28 全球购物
上海中网科技笔试题
2012/02/19 面试题
甜美蛋糕店创业计划书
2014/01/30 职场文书
《九色鹿》教学反思
2014/02/27 职场文书
企业新年寄语
2014/04/04 职场文书
给校长的建议书600字
2014/05/15 职场文书
卫生标语大全
2014/06/21 职场文书
合作协议书模板
2014/10/10 职场文书
党性分析材料格式
2014/12/19 职场文书
拾金不昧感谢信
2015/01/21 职场文书