Ember.js,EmberCLI - 从URL中删除哈希(#)

时间:2014-07-30 03:32:02

标签: ember.js ember-cli

因此根据Ember's documentation Ember默认使用hashchange事件。这就是为什么我们有一个花哨的#/some/url设置。我们还可以将其设置为使用浏览器的history API。

我注意到Built with Ember上列出的大多数(如果不是全部)网站显然都使用了历史记录API。这是有道理的,因为它使URL看起来更自然。

所有这一切都说我(sorta)了解#的位置,方式和原因。

我的问题与EmberCLI有关。我注意到,当我创建一个简单的应用程序时,#不在URL中。那是因为我还没有部署它吗?或者CLI默认为历史API?如果是这样,这套装置在哪里?我找不到

的实例
App.Router.reopen({
  location: 'history'
});

2 个答案:

答案 0 :(得分:14)

我点击的第一个使用了哈希历史记录;)https://fnd.io/

默认情况下,Ember使用散列更改事件,主要是由于跨浏览器兼容性。 http://caniuse.com/history

在ember-cli中,它默认使用autohttp://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

那就是它。