@ditojs/router

中文文档
6.8.0发布于 2026/11/12MITES Module构建来源已验证近 30 天下载 5949

Dito.js Router – Dito.js is a declarative and modern web framework, based on Objection.js, Koa.js and Vue.js

原始使用文档
文档目录3 节
  1. How does it work?
  2. Usage
  3. Options and API

Dito.js Router

Dito.js is a declarative and modern web framework with a focus on API driven development, based on Koa.js, Objection.js and Vue.js

Released in 2018 under the MIT license, with support by https://lineto.com/

Dito.js Router is a high performance, tree-based, framework agnostic HTTP router, based on trek-router, which in turn is inspired by Echo's Router.

How does it work?

The router relies on a tree structure which makes heavy use of common prefixes, essentially a prefix tree.

Usage

import Koa from 'koa'
import Router from '@ditojs/router'

const app = new Koa()
const router = new Router()

// static route
router.get('/folders/files/bolt.gif', ctx => {
  ctx.body = `this ain't no GIF!`
})

// param route
router.get('/users/:id', ctx => {
  ctx.body = `requesting user ${ctx.params.id}`
})

// wildcard routes: `*` matches one segment, `**` the rest of the path
router.get('/books/*', ctx => {
  ctx.body = `book: ${ctx.params.$}`
})
router.get('/files/**', ctx => {
  ctx.body = `file: ${ctx.params.$$}`
})

// Handler found, methods are matched in any case
const { handler, params } = router.find('GET', '/users/233')
console.log(handler, params) // ctx => { ... } { id: '233' }

// HEAD requests fall back on GET routes
router.find('HEAD', '/users/233').handler // ctx => { ... }

// Entry not found
const result = router.find('GET', '/photos/233')
console.log(result.handler, result.status) // undefined 404

// Other methods handle the path, see the statuses in the API docs
router.find('POST', '/users/233') // { status: 501, allowed: ['GET', 'HEAD'] }

// Install router middleware
app.use(async (ctx, next) => {
  const { method, path } = ctx
  const result = router.find(method, path)
  const { handler, params } = result
  if (handler) {
    ctx.params = params || {}
    return handler(ctx, next)
  } else {
    try {
      await next()
    } finally {
      if (ctx.body === undefined && ctx.status === 404) {
        ctx.status = result.status
        if (ctx.status !== 404) {
          ctx.set('Allow', result.allowed.join(', '))
        }
      }
    }
  }
})

app.listen(4040, () => console.log('Koa app listening on 4040'))

Options and API

See the router API docs for the prefix and strict options, the route paths and the statuses of misses.

版本与发布记录

@ditojs/router 共发布 429 个版本,首次发布于 2018/10/08;过去 12 个月发布了 79 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
6.8.0latest2026/11/12今天
6.7.02026/11/11今天
6.6.12026/11/066 天前
6.6.02026/10/3013 天前
6.5.02026/10/2814 天前
6.4.02026/10/2716 天前

关于 @ditojs/router 的常见问题

@ditojs/router 是什么?

Dito.js Router – Dito.js is a declarative and modern web framework, based on Objection.js, Koa.js and Vue.js

如何安装 @ditojs/router?

在项目目录运行 npm install @ditojs/router,或使用 pnpm add / yarn add / bun add。

@ditojs/router 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/ditojs__router 是否存在。

@ditojs/router 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@ditojs/router 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >= 24.0.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@ditojs/router 可以商用吗?

@ditojs/router 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@ditojs/router 的下载量有多少?

根据 npm 官方下载统计,@ditojs/router 在 2026/10/13 – 2026/11/11 这 30 天内被下载 5,949 次,日均约 198 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@ditojs/router 还在维护吗?

最新版本 6.8.0 发布于 2026/11/12(今天);至今共发布 429 个版本,其中过去 12 个月发布了 79 个;首次发布于 2018/10/08。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。