Emberjs 从 URL 中删除主题标签

Posted

技术标签:

【中文标题】Emberjs 从 URL 中删除主题标签【英文标题】:Emberjs remove the hashtag from the URL 【发布时间】:2014-05-13 19:22:44 【问题描述】:

这是一个简单的问题,但我想知道是否可以从 emberjs 的 URL 中删除 # 符号?我知道这在许多框架中是不可能的,但我很想知道 ember。

如果是的话,怎么可能?

【问题讨论】:

Client-side javascript app - url routing with no hash tag的可能重复 【参考方案1】:

如果我理解正确,删除哈希会破坏使用 ember.js 的全部意义,因为其他 url 会指向其他 html 页面,而当您使用 ember.js 时,您只会下载一个页面。

【讨论】:

【参考方案2】:

是的,您可以在Ember Guide中看到相关部分

请记住,这样做意味着您需要配置您的服务器,以便为您可以接受的所有可能路由提供 ember 应用程序

您也可以这样做,以便使用此类路由提供的页面将在其 noscript 标记中具有普通无灰页面的额外好处,作为 SEO 优化的一种形式(试图解释您为什么会这样做这个)

更多内容请见API Docs 揭示了使用 location:auto 而不是 location:history 的不错选择,提供了一个更向后兼容的解决方案

App.Router.reopen(
  location: 'auto'
);

【讨论】:

我最近找到了您的答案并参考了 API 文档。文档没有指定将这段代码放在哪里?我将它放入我的 router.js 文件中,它破坏了我的应用程序。有没有具体的地方放这段代码? 没有 router.js 是添加它的正确位置。请记住为什么要添加 location:'auto' tho,因为它将在现代浏览器中调用 location:'histroy' 而您的后端没有提供正确的路由,这将导致向您提供错误的 404 页面(如果您通过地址栏访问该页面例如,localhost:3000/posts 期望提供一个帖子页面,这与提供 index.html 的localhost:3000/#posts 相反,然后 ember 调用帖子把手模板。只是为了检查使用它不会破坏任何东西,将其转为 location:'hash'这是默认设置。

以上是关于Emberjs 从 URL 中删除主题标签的主要内容,如果未能解决你的问题,请参考以下文章

动态更改embed标签src属性时不显示PDF

如何在 Angular 中保留主题标签

HTML-embed标签详解

从 angular 1.5 url 中删除 # hashtag

HTML embed标签使用方法和属性详解

如何在 URL 中使用带有井号标签的 GET 方法?