code: function KoaBetterRouter (options) {
    if (!(this instanceof KoaBetterRouter)) {
      return new KoaBetterRouter(options)
    }
  
    this.options = utils.extend({ prefix: '/' }, options)
    this.route = utils.pathMatch(this.options)
    this.routes = []
  }
docs: > Initialize `KoaBetterRouter` with optional `options`
  which are directly passed to [path-match][] and
  so to [path-to-regexp][] too. In addition we
  have two more - `prefix` and `notFound`.
  
  **Example**
  
  ```js
  let Router = require('koa-better-router')
  let router = Router().loadMethods()
  
  router.get('/', (ctx, next) => {
  ctx.body = `Hello world! Prefix: ${ctx.route.prefix}`
  return next()
  })
  
  // can use generator middlewares
  router.get('/foobar', function * (next) {
  this.body = `Foo Bar Baz! ${this.route.prefix}`
  yield next
  })
  
  let api = Router({ prefix: '/api' })
  
  // add `router`'s routes to api router
  api.extend(router)
  
  // The server
  let Koa = require('koa') // Koa v2
  let app = new Koa()
  
  app.use(router.middleware())
  app.use(api.middleware())
  
  app.listen(4444, () => {
  console.log('Try out /, /foobar, /api/foobar and /api')
  })
  ```
  
  @param {Object} `[options]` options passed to [path-match][]/[path-to-regexp][] directly
  @param {Function} `[options.notFound]` if passed, called with `ctx, next` when route not found
  @api public