npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@wxiaochuan/koa-history

v0.0.5

Published

koa middleware implements html5 history

Downloads

2

Readme

lang

En | 中文

Introduction

@wxiaochuan/koa-history is a koa middleware that implements html5 history routes. It can flexibly configure routing on koa, and can be used in SPA projects written in vue, react and angular frameworks.

Install

// npm
npm i @wxiaochuan/koa-history
//yarn
yarn add @wxiaochuan/koa-history

use

const history = require('@wxiaochuan/koa-history');
const Koa = require('Koa');

const app = new Koa();

app.use(history({
  routes: ['/user', '/post'],
  root: '/dist'
}));

Option

export interface Router {
  path: string;
  children?: Array<Router>;
}

export interface Option {
  routes?: Router | Router[] | string[];
  shield?: boolean;
  root: string;
  opts?: any;
}

routes

routes option is null

This setting is also known as match-all mode. When routes option is null, all request paths will return.

app.use(history({
  root: '/dist'
}));

routes option is string array

This setting will return when request path match routes options.

app.use(history({
  routes: ['/user', '/post'],
  root: '/dist'
}));

Nested Routes

Options also support nested routes.

app.use(history({
  routes: [
    {
      path: '/user',
      children: [
        {
          path: 'foo'
        }
      ]
    }
  ],
  root: '/dist'
}));

In the example above, request path /user and /user/foo will return html file.

Dynamic Route

Dynamic route is supportted

app.use(history({
  routes: [
    {
      path: '/user/:id'
    }
  ],
  root: '/dist'
}));

Advanced

use with koa-static

It is recommended to use this method to return static files.

const history = require('@wxiaochuan/koa-history');
const Koa = require('Koa');
const koaStatic = require('koa-static');

const app = new Koa();

app.use(history({
  routes: ['/user', '/post'],
  root: '/dist'
}));

app.use(koaStatic('/dist'));

app.listen(9000);

specify index file

The default is to return the index.html file

app.use(history({
  routes: ['/user', '/post'],
  root: '/dist',
  opts: {
    index: 'myfile.html'
  }
}));

open file routes

By default, a path that is not defined in the routes option will return 404, regardless of whether the file exists or not, it will be blocked by default. In the above example, a 404 is returned when path=/ is requested despite the dist/index.html file existed. To turn off this behavior, set shield to false.