Specifying the URL Type
The Ember router has four options to manage your application's URL: history
, which uses the HTML5 History API; hash
, which uses anchor-based URLs; auto
, which uses history
if supported by the user's browser, and falls back to hash
otherwise; and none
, which doesn't update the URL. By default, Ember CLI configures the router to use auto
. You can change this option in config/environment.js
under ENV.locationType
.
history
When using history
, Ember uses the browser's history API to produce URLs with a structure like /posts/new
.
Given the following router, entering /posts/new
will take you to the posts.new
route.
Router.map(function() {
this.route('posts', function() {
this.route('new');
});
});
Keep in mind that your server must serve the Ember app from all the URLs defined in your Router.map
function. In other words, if your user directly navigates to /posts/new
, your server must be configured to serve your Ember app in response.
hash
The hash
option uses the URL's anchor to load the starting state of your application and will keep it in sync as you move around. At present, this relies on a hashchange event existing in the browser.
In the router example above, entering /#/posts/new
will take you to the posts.new
route.
none
Finally, if you don't want the browser's URL to interact with your application at all, you can disable the location API entirely by setting ENV.locationType
to none
. This is useful for testing, or when you don't want Ember to muck with the URL (for example when you embed your application in a larger page).
© 2020 Yehuda Katz, Tom Dale and Ember.js contributors
Licensed under the MIT License.
https://guides.emberjs.com/v2.18.0/configuring-ember/specifying-url-type