因此根据Ember's documentation Ember默认使用hashchange事件。这就是为什么我们有一个花哨的#/some/url
设置。我们还可以将其设置为使用浏览器的history API。
我注意到Built with Ember上列出的大多数(如果不是全部)网站显然都使用了历史记录API。这是有道理的,因为它使URL看起来更自然。
所有这一切都说我(sorta)了解#
的位置,方式和原因。
我的问题与EmberCLI有关。我注意到,当我创建一个简单的应用程序时,#
不在URL中。那是因为我还没有部署它吗?或者CLI默认为历史API?如果是这样,这套装置在哪里?我找不到
App.Router.reopen({
location: 'history'
});
答案 0 :(得分:14)
我点击的第一个使用了哈希历史记录;)https://fnd.io/
默认情况下,Ember使用散列更改事件,主要是由于跨浏览器兼容性。 http://caniuse.com/history
在ember-cli中,它默认使用auto
。 http://emberjs.com/api/classes/Ember.Location.html#toc_autolocation
如果您查看router.js
,您会注意到
var Router = Ember.Router.extend({
location: YourAppENV.locationType
});
从config/environment.js
module.exports = function(environment) {
var ENV = {
baseURL: '/',
locationType: 'auto',
EmberENV: {
....
就像快速插件一样,位置历史记录设置起来有点困难,因为你 基本上必须告诉你的服务器在它被命中时从基页提供服务,并在此之后忽略任何内容,但它实际上只是一次性设置。
答案 1 :(得分:0)
locationType: 'auto'
您的路线为http://localhost:4200/login
locationType: 'hash'
您的路线为http://localhost:4200/#/login
那就是它。