Koa tree router is a high performance router for Koa.
Fast. Up to 11 times faster than Koa-router. Benchmark
Express-style routing using router.get
, router.put
, router.post
, etc.
Support for 405 method not allowed
Multiple middleware per route
The router relies on a tree structure which makes heavy use of common prefixes, it is basically a compact prefix tree (or just Radix tree).
This module's tree implementation is based on julienschmidt/httprouter.
# npm
npm i koa-tree-router
# yarn
yarn add koa-tree-router
const Koa = require("koa");
const Router = require("koa-tree-router");
const app = new Koa();
const router = new Router();
router.get("/", function(ctx) {
ctx.body = "hello, world";
});
app.use(router.routes());
app.listen(8080);
Instance a new router.
You can pass a middleware with the option onMethodNotAllowed
.
const router = require('koa-tree-router')({
onMethodNotAllowed(ctx){
ctx.body = "not allowed"
}
})
Register a new route.
router.on('GET', '/example', (ctx) => {
// your code
})
If you want to get expressive, here is what you can do:
router.get(path, middleware)
router.delete(path, middleware)
router.head(path, middleware)
router.patch(path, middleware)
router.post(path, middleware)
router.put(path, middleware)
router.options(path, middleware)
router.trace(path, middleware)
router.connect(path, middleware)
If you need a route that supports all methods you can use the all
api.
router.all(path, middleware)
Returns router middleware.
app.use(router.routes());
A way to create groups of routes without incuring any per-request overhead.
const Koa = require("koa");
const Router = require("koa-tree-router");
const app = new Koa();
const router = new Router();
const group = router.newGroup("/foo");
// add a handler for /foo/bar
group.get("/bar", function(ctx) {
ctx.body = "hello, world";
});
app.use(router.routes());
app.listen(8080);
This object contains key-value pairs of named route parameters.
router.get("/user/:name", function() {
// your code
});
// GET /user/1
ctx.params.name
// => "1"
There are 3 types of routes:
1.Static
Pattern: /static
/static match
/anything-else no match
2.Named
Named parameters have the form :name
and only match a single path segment:
Pattern: /user/:user
/user/gordon match
/user/you match
/user/gordon/profile no match
/user/ no match
3.Catch-all
Catch-all parameters have the form *name
and match everything. They must always be at the end of the pattern:
Pattern: /src/*filepath
/src/ match
/src/somefile.go match
/src/subdir/somefile.go match
项目地址:https://github.com/caochangkui/demo/tree/koa-test 1. 创建项目 创建目录 koa-test npm init 创建 package.json,然后执行 npm install 通过 npm install koa 安装 koa 模块 通过 npm install supervisor 安装supervisor模块, 用于node热启动
当用create-react-app创建好项目,启动后会自动打开 localhost:3000。 我们希望当访问 localhost:3000/api/todo 会向后台发起一个请求,拿到我们想要的 json 数据。并渲染到前台。 这样的话需要先创建一个后台服务器。我们使用NodeJS的 express 或 koa 服务器框架。下面以 koa 为例。 实现方法如下: 安装koa和koa-route
koa-router是使用koa框架的时候不可少的中间件,但是使用起来是比较简单的,本文就简单介绍一下koa-router的使用。 因为网址的路径不同,所以我们要对输入的网址进行判断,从而返回不同的内容。 1、不使用koa-router的方法 const Koa = require('koa'); const app = new Koa(); const main = function (ctx
当用create-react-app创建好项目,启动后会自动打开 localhost:3000。 我们希望当访问 localhost:3000/api/todo 会向后台发起一个请求,拿到我们想要的 json 数据。并渲染到前台。 这样的话需要先创建一个后台服务器。我们使用NodeJS的 express 或 koa 服务器框架。下面以 koa 为例。 实现方法如下: 安装koa和koa-route
上一篇文章我们讲了Koa的基本架构,可以看到Koa的基本架构只有中间件内核,并没有其他功能,路由功能也没有。要实现路由功能我们必须引入第三方中间件,本文要讲的路由中间件是@koa/router,这个中间件是挂在Koa官方名下的,他跟另一个中间件koa-router名字很像。其实@koa/router是fork的koa-router,因为koa-router的作者很多年没维护了,所以Koa官方将它f
Http 请求 在学习了 koa-router 之后,我们就可以用它来处理一些常见的请求了,比如 POST/GET 。 koa-router 提供了 .get、.post、.put 和 .del 接口来处理各种请求,但实际业务上,我们大部分只会接触到 POST 和 GET,所以接下来只针对这两种请求类型来说明。 当我们捕获到请求后,一般都需要把请求带过来的数据解析出来。数据传递过来的方式一
Vue3.0 Vue3.0是2020年4月刚刚发布了beta版本的全新Vue版本 项目地址: https://github.com/kaiqiangren/vue-next-ts-preview 一、Vue3.0与Vue2.0的对比: 优点: 将Vue内部的绝大部分api对外暴露,使Vue具备开发大型项目的能力,例如compile编译api等 webpack的treeshaking支持度友好 使用
视图 Nunjucks 彩虹是上帝和人类立的约,上帝不会再用洪水灭人。 客户端和服务端之间相互通信,传递的数据最终都会展示在视图中,这时候就需要用到『模板引擎』。 什么是模板引擎? 模板引擎是为了使用户界面与业务数据分离而产生的,可以生成特定格式的文档。例如,用于网站的模板引擎会生成一个标准的 HTML 文档。 市面上常见的模板引擎很多,例如:Smarty、Jade、Ejs、Nunju
Given two binary trees, write a function to check if they are equal or not. Two binary trees are considered equal if they are structurally identical and the nodes have the same values. 题目翻译: 给两棵树,写一个函
Given a binary tree, check whether it is a mirror of itself(ie, symmetric around its center) For example, this tree is symmetric: 1 / \ 2 2 / \ / \ 3 4 4 3 But the following tree is not.
Given a binary tree, return all root-to-leaf paths. For example, given the following binary tree: 1 / \ 2 3 \ 5 All root-to-leaf paths are: ["1->2->5", "1->3"] 题目翻译: 给定一棵二叉树,返回所有从根节点到叶节点的
Given a binary tree, determine if it is height-balanced. For this problem, a height-balanced binary tree is defined as a binary tree in which the depth of the two subtrees of every node never differ b
Given inorder and postorder traversal of a tree, construct the binary tree. 要知道如何构建二叉树,首先我们需要知道二叉树的几种遍历方式,譬如有如下的二叉树: 1 --------|------- 2 3 ----|----
Koa art-template view render middleware. support all feature of art-template. Install npm install --save art-template npm install --save koa-art-template Example const Koa = require('koa'); const ren