wayfarer中文文档|wayfarer js中文教程|解析

npm npmdoc 2年前 (2021-12-28) 465次浏览

wayfarer中文文档|wayfarer js中文教程|解析

安装命令:npm i wayfarer

旅人 稳定

npm 版本 构建状态 测试覆盖率
下载 js-标准风格

可组合的基于路由器。它比传统的、线性的、正则表达式匹配的路由器要快,尽管无关紧要,并且随着路由的数量而扩展。

如果您正在寻找客户端路由器,请查看
sheet-router如果您正在寻找服务器路由器,请查看
server-router

特征

  • 适用于任何框架
  • 为速度而生
  • 最小的依赖
  • 可扩展的

安装

$ npm install wayfarer

用法

var wayfarer = require('wayfarer')
 
var router = wayfarer('/404')
 
router.on('/', () => console.log('/'))
router.on('/404', () => console.log('404 not found'))
router.on('/:user', (params) => console.log('user is %s', params.user))
router.on('/wildcard/*', (params) => console.log('wildcard path is %s', params.wildcard))
 
router('tobi')
// => 'user is tobi'
 
router('/uh/oh')
// => '404 not found'
 
router('/wildcard/example/path')
// => 'wildcard path is example/path'

子路由

路由器可以无限嵌套,允许按视图限制路由。匹配的参数被传递到子路由器。如果没有路径匹配,嵌套路由将调用其父级的默认处理程序。

var r1 = wayfarer()
var r2 = wayfarer()
 
r2.on('/child', () => console.log('subrouter trix!'))
r1.on('/:parent', r2)
 
r1('/dada/child')
// => 'subrouter trix!'

有时需要走动trie以应用转换。

var walk = require('wayfarer/walk')
var wayfarer = require('wayfarer')
 
var router = wayfarer()
router.on('/multiply', (x, y) => x * y)
router.on('/divide', (x, y) => x / y)
 
walk(router, (route, cb) => {
  var y = 2
  return function (params, x) {
    return cb(x, y)
  }
})
 
router('/multiply', 4)
// => 8
router('/divide', 8)
// => 4

应用程序接口

路由器 = 旅人(默认)

使用默认路由初始化路由器。不忽略查询字符串和哈希。

router.on(route, cb(params, [arg1, …]))

注册新路由。注册路由的顺序无关紧要。路由可以注册多个回调。回调可以在调用时返回值。

匹配路由 = router.match(route)

匹配一个路由并返回一个对象。返回的对象包含属性{cb, params, route}此方法不会调用路由的回调。如果没有路由匹配,则返回默认路由。如果没有默认路由匹配,则会抛出错误。

val = 路由器(路由,[arg1,…])

匹配一个路由并执行相应的回调。别名:router.emit()从匹配的路由返回一个值(例如对流有用)。任何附加值都将传递到匹配的路由。

内件

Wayfarer 建立在内部的特里结构上。如果您想使用此特里树结构构建路由器,则可以通过
require('wayfarer/trie'). 它公开了以下方法:

  • trie = Trie() – 创建一个新的树
  • node = trie.create(route) – 在路径上创建一个节点,并返回一个节点
  • node = trie.match(route) – 匹配树上的路由并返回一个节点
  • trie.mount(path, trie) – 在路由的节点上安装一个 trie

已知的问题

多个嵌套部分不匹配

例如/:foo/:bar/:baz不会工作。这是由于Trie.mount()在安装时覆盖了子部分路径。我会在将来的某个时候解决这个问题,但如果有人想贡献一个补丁,我将不胜感激。

常问问题

你为什么建这个?

react-router这样的路由器是解决简单问题的复杂解决方案。实际上,所需要的只是一个
无方法的路由器,它可以定义+匹配路径并可以挂载其他路由器来委托请求。

为什么我的路线不匹配?

Wayfarer 只比较字符串。在传入 url 之前,您可能希望使用pathname-match模块将其从查询字符串和哈希中剥离

也可以看看

执照

麻省理工学院


极客公园 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:wayfarer中文文档|wayfarer js中文教程|解析
喜欢 (0)
.excerpt .focus {display:none}