如何使用spine.js中没有散列符号的常规URL?
我想实现的URL中的http://localhost:9294/users代替http://localhost:9294/#/users如何使用spine.js中没有散列符号的常规URL?
这根据文件似乎可能的形式,但我一直没能得到这个工作“可收藏”的网址。
为了澄清,直接浏览http://localhost:9294/users给出了404 “未找到:/用户”
可以在脊柱打开HTML5历史支持这样的:
Spine.Route.setup(history: true)
通过传递history: true
Spine.Route.setup()
的参数将启用没有散列的花式URL。
此文档实际上被埋葬了一点,但它在这里(倒数第二部分):http://spinejs.com/docs/routing
编辑:
为了有一个可以导航到直接的网址,你将不得不做这个“服务器”方面。例如,使用Rails,你将不得不建立一个方法来获取url的参数(在本例中为“/ users”),并相应地将它传递给Spine。以下是Spine文档的摘录:
但是,使用 历史API时需要注意一些事项。首先,您发送到导航()的每个URL需要有一个 真实的HTML表示。尽管浏览器在此时不会请求新的 URL,但如果页面随后被重新加载 ,它将被请求。换句话说,你不能组成任意的URL,就像你可以用散列片段 一样;每个传递给API的URL都需要存在。 实现此目的的一种方法是使用服务器端支持。
当浏览器请求一个URL(期待HTML响应)时,您首先在服务器端确定 该端点存在且有效。然后,您可以只提供主应用程序,它将读取调用适当路由的URL 。例如,假设您的用户 导航到http://example.com/users/1。在服务器端,您检查 URL/users/1是否有效,并且存在ID为 1的用户记录。然后,您可以继续并提供JavaScript 应用程序。
这种方法的缺陷是,它不会为搜索引擎抓取任何真实的内容。如果您希望您的应用程序可以抓取,您必须检测抓取机器人请求,并将它们提供给“内容的并行Universe”。尽管如此,这已经超出了这个 文档的范围。
这确实是一个很好的努力,让这个工作正常,但它可以完成。不知道你正在使用的堆栈,不可能给你一个具体的答案。
我更新了问题以更好地解释我的问题。 – 2012-04-20 03:38:05
刚刚更新了我的答案,以更好地反映您的问题! – fholgado 2012-04-23 18:30:26
我已阅读文档,所以我已经知道这一点。我不确定它在任何情况下都适用,因为路由可能与RESTful资源无关。在Apache的情况下,什么可能是一个潜在的解决方案? – 2012-04-25 01:50:11