Skip to content
On this page

koa-mount

简介

koa-mount 是一个用于挂载 Koa 应用或中间件到特定路径的工具,它允许将完整的 Koa 应用作为另一个 Koa 应用的中间件来使用。

安装

bash
npm install koa-mount

基本使用

javascript
const Koa = require('koa');
const mount = require('koa-mount');

// 主应用
const app = new Koa();

// 子应用
const admin = new Koa();
admin.use(async ctx => {
  ctx.body = 'Hello Admin';
});

// 将子应用挂载到指定路径
app.use(mount('/admin', admin));

// 主应用的路由
app.use(async ctx => {
  if (ctx.path === '/') {
    ctx.body = 'Hello World';
  }
});

app.listen(3000);

挂载中间件

javascript
// 挂载单个中间件
app.use(mount('/api', async (ctx) => {
  ctx.body = { status: 'ok' };
}));

// 挂载静态文件服务
const serve = require('koa-static');
app.use(mount('/static', serve(__dirname + '/public')));

嵌套挂载

javascript
const api = new Koa();
const v1 = new Koa();
const v2 = new Koa();

// 配置 API 版本
v1.use(async ctx => {
  ctx.body = 'API v1';
});

v2.use(async ctx => {
  ctx.body = 'API v2';
});

// 嵌套挂载
api.use(mount('/v1', v1));
api.use(mount('/v2', v2));
app.use(mount('/api', api));

配置选项

  • 路径前缀:指定挂载的路径
  • 中间件或应用:要挂载的 Koa 中间件或应用实例

路径处理

javascript
// 处理路径前缀
app.use(mount('/prefix', async (ctx) => {
  // ctx.path 已经去除了前缀
  console.log(ctx.path); // 不包含 '/prefix'
  console.log(ctx.url); // 包含完整的 URL
}));

注意事项

  1. 挂载点的路径必须以 '/' 开头
  2. 被挂载的应用会继承父应用的上下文
  3. 注意路由的优先级,挂载的顺序很重要
  4. 合理组织应用结构,避免过深的嵌套
  5. 注意错误处理的传播
  6. 在大型应用中合理使用挂载来模块化代码

要保持清醒 永远不抱有意外的幻想 凭空的期待最要命