Hijax
在 Bulletproof Ajax 中作者提出了一个叫 Hijax 的理念 ,不是极端的完全采用 ajax 数据与表现分离的做法,而是稍微对传统页面增强一下,javascript 仅仅作为局部刷新的桥梁,所有逻辑仍然放在服务器上, 相对于传统做法,Hijax 将页面进一步划分为分离的模块,对每个模块 用相应的处理页面表示,总的页面由各个分离的模块页面 include 所组成。
示例伪代码:
<div id="module1">
<%@include file="module1.jsp"%>
</div>
<div id="module2">
<%@include file="module2.jsp"%>
</div>
每个模块jsp读取整个页面传过来的url参数,来决定它的状态。
适用场景
则 当浏览器支持ajax 时 ,只需要将相应参数传递给要更新的模块页面,得到该模块产生的html,由javascript 的 innerHTML 局部刷新该模块所在区域。
当浏览器不支持ajax时,则相应参数传递给整个页面刷新,相应模块读取参数更新。
渐进增强的做法
初始各个链接,form 目标都为 index.jsp?xx=y,即默认利用总体页面刷新来更新局部模块,然后利用 javascript 改变链接和form的行为,使得默认行为失效,改为利用 xhr 传递相应参数到相应模块jsp即可,得到结果局部后用 innerHTML 刷新该模块区域。