From dbcff4b23dd6d2e715dcf9e92209cf5adb7c4b29 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carl=20T=C3=B6rnqvist?= Date: Sat, 8 Jun 2019 12:33:54 +0200 Subject: [PATCH] Disable hash routing by default --- README.md | 14 +++++++------- index.js | 2 +- test/browser.js | 10 +++++----- test/node.js | 8 ++++---- 4 files changed, 17 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index 4b5855e5..d7bed5bd 100644 --- a/README.md +++ b/README.md @@ -284,12 +284,12 @@ Querystrings (e.g. `?foo=bar`) are ignored when matching routes. An object containing the key-value mappings exists as `state.query`. ### Hash routing -By default hashes are treated as part of the url when routing. Using hashes to -delimit routes (e.g. `/foo#bar`) can be disabled by setting the `hash` -[option](#app--chooopts) to `false`. Regardless, when a hash is found we also -check if there's an available anchor on the same page, and will scroll the -screen to the position. Using both hashes in URLs and anchor links on the page -is generally not recommended. +By default, hashes are ignored when routing. When enabling hash routing +(`choo({ hash: true })`) hashes will be treated as part of the url, converting +`/foo#bar` to `/foo/bar`. This is useful if the application is not mounted at +the website root. Unless hash routing is enabled, if a hash is found we check if +there's an anchor on the same page, and will scroll the element into view. Using +both hashes in URLs and anchor links on the page is generally not recommended. ### Following links By default all clicks on `` tags are handled by the router through the @@ -534,7 +534,7 @@ Initialize a new `choo` instance. `opts` can also contain the following values: - __opts.cache:__ default: `undefined`. Override default class cache used by `state.cache`. Can be a a `number` (maximum number of instances in cache, default `100`) or an `object` with a [nanolru][nanolru]-compatible API. -- __opts.hash:__ default: `true`. Treat hashes in URLs as part of the pathname, +- __opts.hash:__ default: `false`. Treat hashes in URLs as part of the pathname, transforming `/foo#bar` to `/foo/bar`. This is useful if the application is not mounted at the website root. diff --git a/index.js b/index.js index 45effedc..8426f706 100644 --- a/index.js +++ b/index.js @@ -38,7 +38,7 @@ function Choo (opts) { // properties for internal use only this._historyEnabled = opts.history === undefined ? true : opts.history this._hrefEnabled = opts.href === undefined ? true : opts.href - this._hashEnabled = opts.hash === undefined ? true : opts.hash + this._hashEnabled = opts.hash === undefined ? false : opts.hash this._hasWindow = typeof window !== 'undefined' this._cache = opts.cache this._loaded = false diff --git a/test/browser.js b/test/browser.js index 18728ed9..2944626f 100644 --- a/test/browser.js +++ b/test/browser.js @@ -52,7 +52,7 @@ tape('should expose a public API', function (t) { t.end() }) -tape('should enable history and hash by defaut', function (t) { +tape('should enable history and href by defaut', function (t) { var app = choo() t.true(app._historyEnabled, 'history enabled') t.true(app._hrefEnabled, 'href enabled') @@ -82,9 +82,9 @@ tape('router should support a default route', function (t) { app.mount(container) }) -tape('router should treat hashes as slashes by default', function (t) { +tape('enabling hash routing should treat hashes as slashes', function (t) { t.plan(1) - var app = choo() + var app = choo({ hash: true }) var container = init('/account#security') app.route('/account/security', function (state, emit) { t.pass() @@ -93,9 +93,9 @@ tape('router should treat hashes as slashes by default', function (t) { app.mount(container) }) -tape('router should ignore hashes if hash is disabled', function (t) { +tape('router should ignore hashes by default', function (t) { t.plan(1) - var app = choo({ hash: false }) + var app = choo() var container = init('/account#security') app.route('/account', function (state, emit) { t.pass() diff --git a/test/node.js b/test/node.js index eefe4b58..47c20f9e 100644 --- a/test/node.js +++ b/test/node.js @@ -76,9 +76,9 @@ tape('router should support a default route', function (t) { t.end() }) -tape('router should treat hashes as slashes by default', function (t) { +tape('enabling hash routing should treat hashes as slashes', function (t) { t.plan(1) - var app = choo() + var app = choo({ hash: true }) app.route('/account/security', function (state, emit) { t.pass() return html`
` @@ -87,9 +87,9 @@ tape('router should treat hashes as slashes by default', function (t) { t.end() }) -tape('router should ignore hashes if hash is disabled', function (t) { +tape('router should ignore hashes by default', function (t) { t.plan(1) - var app = choo({ hash: false }) + var app = choo() app.route('/account', function (state, emit) { t.pass() return html`
`