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


所以根据 Ember的文档 Ember默认使用 hashchange 事件。这就是为什么我们有这种想法 #/some/url 建立。我们也可以将其设置为使用浏览器 历史 API。

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

所有这一切都说我(sorta)了解的地方,方式和原因 # 得到了加强。

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

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

4399
2017-07-30 03:32


起源

此默认散列更改是否在localhost上不起作用。我的意思是在使用localhost时,我没有在地址栏中看到任何#的路由? - testndtv


答案:


我点击的第一个使用哈希历史记录;) 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: {
    ....

就像快速插件一样,位置历史记录设置起来有点困难,因为你 基本上必须告诉你的服务器在它被命中时从基页提供服务,并在此之后忽略任何内容,但它实际上只是一次性设置。


14
2017-07-30 03:45



触摸find.io.我之前点击了一个随机样本,他们的所有URL都省略了#。不知道你对我如何改变路线你的意思 - JDillon522
我撒谎,更新。 - Kingpin2k
配置好抓。我完全忽略了这一点。我必须找到一篇好文章,或者谈论Ember中每种位置类型的优缺点 - JDillon522
所以,在我张开嘴之前,我应该做更多的搜索。我发现 Ember的文档 在...上 location API。 - JDillon522
@ kingpin2k,就像你的评论一样,它只是一次性设置。我试图做那个设置,但我坚持静态资源路径。一切都以'moduleName'为前缀。你能看看这个吗? 问题 - MMA


对于 locationType: 'auto' 你的路线将是 http://localhost:4200/login

对于 locationType: 'hash' 你的路线将是 http://localhost:4200/#/login

而已。


0
2018-06-01 22:55