Dojo最佳实践 - 实现可书签化的Ajax应用2011-01-21 IBM 王存玮 胡旷传统 Web 应用程序可以非常好的支持浏览器的书签收藏以及前进后退按钮。而在基于 Ajax 的 Web 应用中,页面的内容刷新往往是通过异步请求的方式动态局部刷新,而不会重新请求一个页面,因而页面对应的 URL 并不会变化,前进后退按钮也不会起任何作用。这样就导致在这类 Ajax 应用中无法通过书签来记录特定的视图。本文将首先介绍通用的基于超链接锚点的可书签化的 Ajax 应用的编程模式,然后以该编程模式的分析与设计为基础并结合实例来说明如何应用 Dojo 提供的 Dojo.back 技术来实现可书签化的 Ajax 应用。最后还会介绍下 Dojo1.4 中提供的新的 Dojo.hash 技术对可书签化 Ajax 应用的支持。通过阅读本文读者能够了解基于超链接锚点的编程模式如何来设计可书签化的 Ajax 应用,并能通过 Dojo 提供的 Dojo.back 技术或者是 Dojo.hash 技术来实现可书签化的 Ajax 应用。可书签化的 Ajax 应用的挑战Ajax 技术给 Web 用户带来全新的使用体验同时,也给 Web 开发人员带来了各种各样的挑战。对于浏览器书签收藏以及前进后退按钮的支持,便是其一。对于传统的 Web 应用而言,对于支持浏览器的书签收藏以及签名后退按钮是很自然的事情,开发人员并不需要做额外的工作。每个 Web 页面都有一个唯一的 URL,书签收藏的 URL 便对应相应的页面,而用户在不同页面之间浏览时便形成一个历史记录队列,队列中每一项对应一个页面 (URL), 浏览器通过记录这个历史队列来提供前进后退按钮功能。但在基于 Ajax 的 Web 应用中 , 情况却有所不一样。很多时候页面视图的转换是通过异步请求动态地局部刷新页面实现的,并没有重新请求一个新页面,因而页面视图对应的 URL 也不会变化,也不会形成上面情况所说的历史记录。现在的浏览器还是以传统的 Web 应用的方式来支持书签收藏及前进后退按钮。对于新兴的 Ajax Web 应用,浏览器在这方面的支持并不好。这就导致了浏览器的书签收藏,前进后退按钮功能对于 Ajax Web 应用失去了意义。图 1. 传统 Web 应用与 Ajax Web 应用的差异

那是不是我们在现有的浏览器中只能放弃书签收藏以及前进后退功能呢?显然这样是很难让人接受的,让本来是给用户带来使用体验提升的 Ajax 技术失去一项很好的用户体验。幸好我们还有办法。接下来将介绍一种基于超链接锚点的技术来实现 Ajax Web 应用的浏览器书签收藏及前进后退按钮支持。为简单起见,我们把支持浏览器书签收藏及前进后退功能的 Ajax 应用称作可书签化的 Ajax 应用。