如何将我的 koa 路线分割成单独的文件?

2023-12-24

我正在尝试找出如何将我的路线分成单独的文件。

到目前为止我已经有了这个,但它不起作用。我刚刚得到Not found当我尝试访问时http://localhost:3001/api/things

//server.js
var koa = require('koa');
var app = koa();
var router = require('koa-router');

app.use(router(app));
require('./routes')(app);


// routes.js
module.exports = function *(app){
  app.use('/api/things', require('./api/things'));
};


// api/things/index.js

var Router = require('koa-router');
var router = new Router({
  prefix: '/api/things'
});

router.get('/', function *(){
  this.body = [{ name: 'Foo'}, { name: 'Bar' }];
});

module.exports = router;


EDIT:我更新了下面的代码示例,因为koa-routernpm 上的包不再维护。 Koa 团队已经以这个名字正式分叉了它@koa/router.


对于阅读本文的任何人,如果对如何在 Koa 2.X 中执行此操作感到好奇:

app.js

import Koa from 'koa'
import rootRouter from './routes/root'
import userRouter from './routes/user'

const app = new Koa()

app.use(rootRouter.routes())
app.use(rootRouter.allowedMethods())
app.use(userRouter.routes())
app.use(userRouter.allowedMethods())

export default app

路线/root.js

import Router from '@koa/router'
const router = new Router()

router.get('/', async (ctx, next) => {
  ctx.body = 'Hello'
})

export default router

路线/user.js

import Router from '@koa/router'
const router = new Router({ prefix: '/user' })

router.get('/', async (ctx, next) => {
  ctx.body = 'Some User'
})

export default router

如果你想避免重复routes()allowedMethods(), 您可以使用koa-compose将中间件组合在一起。为了简单起见,我做了一个wrapper https://github.com/saadq/koa-combine-routers/围绕它来简化工作koa-router。使用它看起来像这样:

app.js

import Koa from 'koa'
import router from './routes'

const app = new Koa()

app.use(router())

export default app  

路线/index.js

import combineRouters from 'koa-combine-routers'
import rootRouter from './root'
import userRouter from './user'

const router = combineRouters(
  rootRouter,
  userRouter
)

export default router

它也会做同样的事情。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将我的 koa 路线分割成单独的文件? 的相关文章

随机推荐

  • 在graphviz中记录节点和rankdir

    当我将图表的rankdir从LR更改为TD时 我的记录节点也更改了它们的布局方向 因此它们不再看起来像 记录 我尝试对节点应用单独的rankdir 但这没有效果 如何使记录节点保持正确的布局 digraph sample graph ran
  • Windows Phone 8 模拟器错误 - 创建交换机时发生了一些情况

    我有一个类似的问题 就像这个问题中提到的 无法创建虚拟机 https stackoverflow com questions 13148828 windows phone 8 unable to create the virtual mac
  • 查看包含“很多”列的表格的最佳方式?

    冒着被降级的风险 我想问一下 使用 C 和lot列 我所说的很多 是指大约 1000 个 现在 在您感到高兴之前 或者抛出诸如 为什么您会有一个包含那么多列的表格 之类的回答之前 让我说这实际上是设计要求的一部分 我们正在尽可能快地从 10
  • Android应用程序许可证仅持续一段时间

    我们开发了一款 Android 应用程序 我们希望用户可以购买该应用程序 但只能购买一段时间 例如一年 一旦期限到期 他们应该在新的期限内再次购买该应用程序 我们查看了Google有关 应用程序许可 的信息 但已经有一段时间没有看到许可了
  • 基于 DataContext 属性的触发器

    假设我想根据 DataContext 中的属性值显示 隐藏元素 如何实现 In MainWindow xaml cs DataContext of MainWindow xaml public int Mode get set 在 XAML
  • 获取 vim 编辑器上分割窗口的位置

    我一直在尝试找出如何获取 vim 编辑器窗口内分割窗口的位置 坐标 但到目前为止还没有运气 比如说我有这个布局 0 0 2 0 Split A Split C 0 2 Split B Split D Split D would be 2 2
  • 尝试从 Eclipse 到 Android Studio 执行 Android 应用程序时出现异常

    我尝试将 Eclipse Android 项目迁移到 Android Studio 我尝试了两种方法 直接从 Android Studio 打开并先迁移到 Eclipse 中的 Gradle 然后在 Android Studio 中打开它
  • EPPlus 的通用 Excel 生成器函数

    如何为 LINQ 查询构建通用 EPPlus 电子表格函数 更新 该需求专门针对 ASP NET MVC 应用程序 我所做的只是创建一个接受列表的通用函数 我使用反射来获取属性列表 这将成为我们的列标题 最后 我只是让 EPPlus 完成所
  • 是否可以在 Google Apps 脚本中执行 ImportRange?

    我今天一直在玩 Google Apps 脚本 并尝试编写一些自定义电子表格函数 我已经进行了一些搜索 但找不到我的查询的答案 我知道在 Google 电子表格上 您可以在电子表格的单元格中使用 ImportRange 如下所示 Import
  • 使用 foreach 迭代 IQueryable 会导致内存不足异常

    我正在使用 foreach IQueryable 和 LINQ to SQL 迭代一个小型 10GB 表 看起来像这样 using var conn new DbEntities CommandTimeout 600 100 var dta
  • Kubernetes NGINX 入口重写目标注释破坏

    我正在 Windows 的 docker 桌面下运行 kubernetes v1 16 我已经使用 helm 安装了 nginx ingress 控制器 v1 7 9 我已更新我的主机文件以包含以下条目 127 0 0 1 applicat
  • 使用 @font-face 在 IE 中显示无样式内容的 Flash

    我正在开发一个网站 该网站使用 Open Sans 字体作为正文 并使用 Font Squirrel 生成的 EOT SVG WOFF 和 TTF 字体文件和样式表 我首先将字体 CSS 包含在页面标题中 但是 当我在 IE7 IE8 甚至
  • 我可以清除托管对象上下文吗?

    问题 我正在进行一次非常大的导入 其中解析了一个 XML 文件 对于每 10 个解析的托管对象 我想保存托管对象上下文并删除内存中的这 10 个对象 这样内存中的对象永远不会超过 10 个 保存后 如何清除上下文以便所有对象都从内存中消失
  • 获取 MD5 和 SHA-1

    我正在寻求一些帮助来在我的 iPhone 应用程序中获取 MD5 和 SHA 1 有人可以告诉我如何获得这些吗 include
  • 汇编:32 位寄存器的 64 位乘法

    我有一个关于 x86 汇编中 64 位乘法的实现的问题 我已经发布了我能够理解的代码 我不知道其余的人在做什么 而且我可能在我已经做过的事情中犯了错误 任何方向将不胜感激 dest at ebp 8 x at ebp 12 y at ebp
  • HTML 5 响应式 Canvas 中的鼠标位置

    我搜索过其他问题 但没有一个适合我的情况 我有一个画布元素
  • 使用 Swift 在 iOS WKWebview 中捕获 Javascript 事件

    我正在使用网络编程语言构建一个应用程序 并希望在用户单击 HTML 按钮时启动相机 由于我希望我的相机视图是自定义的 因此我需要使用 Swift 进行设计 因此 当用户单击此 HTML 按钮时 我想在 Swift 中 捕获 此单击 以便可以
  • 如何从 GAC 中提取程序集?

    我必须处理一个包 它将程序集直接安装到 GAC 中 例如 位于 windows assembly 深处的某个位置 如何将实际程序集 DLL 从 GAC 转移到普通文件系统中 Thanks 我使用了来自的建议本文 http blogs msd
  • 使用 iOS 6 UITableView dequeueReusableCellWithIdentifier:forIndexPath 时设置 UITableViewCell 的样式:

    我正在尝试弄清楚如何设置UITableViewCellStyle当使用 iOS 6 中的新方法时UITableView 以前 当创建UITableViewCell我会改变UITableViewCellStyle调用时使用枚举创建不同类型的默
  • 如何将我的 koa 路线分割成单独的文件?

    我正在尝试找出如何将我的路线分成单独的文件 到目前为止我已经有了这个 但它不起作用 我刚刚得到Not found当我尝试访问时http localhost 3001 api things server js var koa require