这篇文章提出了一个令人信服的观点:由于URL是长期存在的(会被收藏和传播),因此它们应该具有可读性,使用哈希符号来进行实际路由(确定页面上显示的数据和/或应用程序的状态)是不正确的。但当我尝试在我的单页应用程序中实现这一点时,却遇到了一个问题:如何呈现我的链接,以便所有浏览器都可以使用应用程序?我认为有三个选择:
- 所有的
href
都有一个#/
前缀。这在HTML4浏览器中非常有效。在HTML5浏览器中,我可以添加一个Sammy路由器,将其重定向到没有哈希值的版本,这也非常有效。可能存在一个问题,就是当链接未被访问时,浏览器会将其标记为已访问,或者当链接已被访问时,浏览器会将其标记为未访问。另一个问题是它是错误的。任何通过右键单击并选择“复制链接地址”来共享链接的人都将发送一个有效但笨拙的URL。 - 没有
#/
前缀,据我所知,HTML4浏览器将无法拦截这些链接点击,这意味着每个链接都会导致页面刷新。虽然应用程序可能仍然可以运行,因为我可以使用Sammy路由器在页面加载时将没有哈希值的版本重写为有哈希值的版本,但页面加载将损害单页应用程序的性能。 - 我动态确定是否要添加
#/
前缀。这意味着所有的链接都必须具有动态标记,并显著复杂化了应用程序。