Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/christophehurpeau/router-segments
Router with segments
https://github.com/christophehurpeau/router-segments
koa nodejs path2regexp router
Last synced: 3 months ago
JSON representation
Router with segments
- Host: GitHub
- URL: https://github.com/christophehurpeau/router-segments
- Owner: christophehurpeau
- License: mit
- Created: 2017-07-08T17:11:30.000Z (over 7 years ago)
- Default Branch: main
- Last Pushed: 2024-05-22T03:20:55.000Z (9 months ago)
- Last Synced: 2024-05-22T04:28:06.511Z (9 months ago)
- Topics: koa, nodejs, path2regexp, router
- Language: TypeScript
- Homepage: https://christophehurpeau.github.io/router-segments/
- Size: 924 MB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
- Authors: AUTHORS
Awesome Lists containing this project
README
router-segments
Router with segments### Why another router ?
This router take full advantages of segments, building a tree of regexp to avoid having 500 regexp calls for one route.
### How to use
router-segments uses [path-to-regexp](https://www.npmjs.com/package/path-to-regexp) for matching the route paths,
also used by [expressjs](https://expressjs.com/en/guide/routing.html), [koa-router](https://www.npmjs.com/package/koa-router)
and many other routers.```js
import { createRouterBuilder } from "router-segments";const builder = createRouterBuilder();
builder.add("/", ref);
builder.addSegment("/post", (segmentBuilder) => {
segmentBuilder.add("/:id(\\d+)-:slug([A-Za-z\\-]+)", ref, "/post/view");
segmentBuilder.defaultRoute(ref, "/post");
});export default builder.createRouter();
```#### Url Generator
[path-to-regexp documentation](https://www.npmjs.com/package/path-to-regexp#compile-reverse-path-to-regexp)
```js
router.toPath("/post/view", { id: "001", slug: "a-slug" });
// /post/001-a-slug
```## Localized routes
```js
import { createRouterBuilder } from "router-segments";const builder = createRouterBuilder(["en", "fr"]);
builder.add("/", ref);
builder.addLocalizedSegment(
{
en: "/my-blog",
fr: "/mon-blog",
},
(segmentBuilder) => {
segmentBuilder.addLocalized(
{
en: "/post/:id(\\d+)",
fr: "/billet/:id(\\d+)",
},
ref,
"/my-blog/post",
);
segmentBuilder.defaultRoute(ref, "/my-blog");
},
);export const router = builder.createRouter();
```## API
see [Definition file](https://github.com/christophehurpeau/router-segments/tree/master/dist/index.d.ts)