# m-router

> a tiny SPA router

Latest version **1.0.1** (published 2017-12-28) · MIT license · 0 weekly downloads

## Install

```sh
npm install m-router
pnpm add m-router
yarn add m-router
bun add m-router
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.0.1 |
| Published | 2017-12-28 |
| First published | 2017-12-28 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 0 |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 3 |
| Author | hpoenixf |
| Maintainers | hpoenixf |
| Keywords | SPA, router |

## Links

- npm: https://www.npmjs.com/package/m-router
- Repository: https://github.com/hpoenixf/m-router
- Homepage: https://github.com/hpoenixf/m-router#readme
- Issues: https://github.com/hpoenixf/m-router/issues
- npm.io page: https://npm.io/package/m-router

## Alternatives

- [express-promise-router](https://npm.io/package/express-promise-router.md) — 736.1K weekly downloads
- [next-usequerystate](https://npm.io/package/next-usequerystate.md) — 29.8K weekly downloads
- [@bitkyc08/opencodex](https://npm.io/package/@bitkyc08/opencodex.md) — 4.6K weekly downloads
- [lynkr](https://npm.io/package/lynkr.md) — 575 weekly downloads
- [baremetal.js](https://npm.io/package/baremetal.js.md) — 42 weekly downloads

## Recent versions

- 1.0.1 (latest) — 2017-12-28
- 1.0.0 — 2017-12-28

## README

#### m-router

[![npm](https://img.shields.io/npm/dt/m-router.svg)]()
[![GitHub issues](https://img.shields.io/github/issues/hpoenixf/m-router.svg)](https://github.com/hpoenixf/koa2-proxies/issues)
[![GitHub license](https://img.shields.io/github/license/hpoenixf/m-router.svg)](https://github.com/hpoenixf/koa2-proxies/blob/master/LICENSE)


#### example

```javascript

// router.js
import Router  from 'm-router'
import Xtemplate from 'xtemplate/lib/runtime'
import controller from 'controller'

let router = new Router({
  render(xtpl, data, callback) {
    document.getElementById('root').innerHTML = new Xtemplate(xtpl).render(data)
    this.runPage(callback)
    $('body').scrollTop(0) // to top
  }
})


router.get('/url/a', controller.a)
router.get('/url/b', controller.b)


router.start()


// controller.js

// webpack Dynamic Imports https://webpack.js.org/guides/code-splitting/#dynamic-imports

export default {
    a: function(req, res) {
      import(/* webpackChunkName: "a" */ 'script/a').then(module => {
        if (this.needBrowserRender(module.default)) {
          res.render(
            require('views/a.xtpl'),
            {
              title: 'a'
            },
            module.default)
        }
      })
    },
      b: function(req, res) {
        import(/* webpackChunkName: "b" */ 'script/b').then(module => {
          if (this.needBrowserRender(module.default)) {
            res.render(
              require('views/b.xtpl'),
              {
                title: 'b'
              },
              module.default)
          }
        })
      },
}

// a.js

export default function() {
  console.log('page load')
  return function() {
    console.log('page left')
  }
}

```javascript

---
_Source: https://npm.io/package/m-router · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
