2013-03-18 166 views
0

我刚刚开始使用一个已经使用Backbone的Web项目,但到目前为止我还没有做任何Web。我一直在阅读文档并阅读路由器(http://thomasdavis.github.com/2011/02/07/making-a-restful-ajax-app.htmlhttp://backbonetutorials.com/what-is-a-router/#/route/action),但我不确定是否理解其中一个基本的东西。骨干路由,什么是#标签?

用于骨干路由器的#标签是什么?我搜索了一下,看到#被用来指向页面中的特定点,但除此之外,我不太确定骨干网如何使用它。像这样的网页上:http://backbonetutorials.com/what-is-a-router/#/route/action他们这样说:

Also note that routes interpret anything after "#" tag in the URL. All links in your application should target "#/action" or "#action". (Appending a forward slash after the hashtag looks a bit nicer e.g. http://example.com/#/user/help) 

但到底是什么,实际上意味着什么呢?我不太明白。对不起noob问题,但我真的无法弄清楚。谢谢。

回答

2

散列后的URL的部分是“fragment identifier”,这是原本引用页内锚状http://example.com/my_long_article#Section-14其中即用<a name="Section-14"></a>只是部分14材料上方的单一的HTML文档。浏览器实际上并没有将这部分URL发送到请求中的服务器(这可能令人沮丧),它只是用来将长文档自动滚动到该位置。

对于现代的单页面应用程序,该技术已被重新用于获取URL,以表示应用程序中的特定屏幕或视图,但不会导致浏览器实际请求其他文档。因此,如果您从/my-app#cars导航到/my-app#trucks,则浏览器不会加载新页面,这意味着您的JavaScript保持加载状态,并且可以以“单页”样式进行响应。

现代浏览器可以通过HTML5 pushState API实现此目的,但对于旧版浏览器,散列方法仍然很常见。