如何在spine.js中使用没有哈希符号的常规URL?

时间:2012-04-17 03:08:52

标签: spine.js

我正在尝试以http://localhost:9294/users而非http://localhost:9294/#/users

的形式实现网址

根据文档的说法,这似乎是可行的,但我无法使用“可收藏”的网址。

为了澄清,直接浏览http://localhost:9294/users会给出404“未找到:/ users”

2 个答案:

答案 0 :(得分:0)

您可以在Spine中启用HTML5历史记录支持,如下所示:

Spine.Route.setup(history: true)

history: true参数传递给Spine.Route.setup(),这将启用没有哈希的花哨网址。

这方面的文档实际上有点埋没,但它在这里(倒数第二节):http://spinejs.com/docs/routing

修改

为了拥有可以直接导航的网址,您必须执行此“服务器”端。例如,使用Rails,您必须构建一种方法来获取url的参数(在本例中为“/ users”),并相应地将其传递给Spine。以下是Spine文档的摘录:

  

但是,使用时需要注意一些事项   历史API。首先,您发送到navigate()的每个URL都需要有一个   真正的HTML表示。虽然浏览器不会请求新的   此时的URL,如果页面随后将被请求   重新加载。换句话说,您无法像您一样构成任意网址   可以使用哈希片段;传递给API的每个URL都需要存在。   实现此目的的一种方法是服务器端支持。

     

当浏览器首先请求URL(期待HTML响应)时   确保在服务器端端点存在且有效。那么你   可以只提供主应用程序,它将读取URL,   调用适当的路线。例如,假设您的用户   导航到http://example.com/users/1。在服务器端,您检查   URL / users / 1有效,以及ID为的用户记录   1存在。然后你可以继续提供JavaScript   应用

     

这种方法的警告是它不提供搜索引擎   抓取任何真实的内容。如果你想要你的应用程序   可抓取,您必须检测爬虫机器人请求并为其提供服务   一个'平行的内容世界'。这超出了这个范围   但是文档。

要使其正常工作绝对是一项很好的努力,但是可以做到。如果不知道你正在使用的堆栈,就不可能给你一个具体的答案。

答案 1 :(得分:0)