探讨一种兼容性框架
服务器端的MVC和客户端的MVC能否一起使用?最近一直在想这个问题,看了很多帖子也没有找到比较好的解决方案。
以下是我的一些想法,首先判断客户端浏览器是否支持JS
-》当客户端浏览器支持JS的时候,利用JS当作控制层;
-》当客户端浏览器不支持JS的时候,利用Action当作控制层。
问题是需要这样的一个模版,既可以让JSP解析(赋值),也可以让JS解析。
方案1:如果这个模版是XSL写的,比较容易解决,可是大多数美工不会XSL,这样就需要模版必须为HTML的样子。
大家都知道HTML需要美工经常修改,尤其是首页。
如果美工每次修改,我们再给转化为XSL,工作应该不比JSP套版省事。
方案2:目前知道Trimpath对HTML解析比较好,如果写一个Trimpath的服务器端实现,是不是就解决这个问题了?
方案3:修改Trimpath适应Velocity或者Freemarker的语法,但是这两种翻译器明显象个二楞子,是匹配文件路径,当浏览器支持JS时也不放过。
苦恼啊!//index.html<html><head><script src="prototype.js"></script><script src="index.js"></script></head><body><div id="number_src" style="display:none;">当前有${number}人在线。</div><form method="post" action="index.do"><input type="submit" id="get_number" value="获取当前在线人数"/><div id="number_dst">当前有${number}人在线。</div></form></body></html>
到这里,美工完事了,接下来为支持js的浏览器写Control
//index.jsvar get_number = $('get_number');var number_src = $('number_src');var number_dst = $('number_dst');get_number.onclick= function(){//简化代码,如何获得connection这里不讨论 connection.getNumber(function (result) { if(result!=null){ number_dst.innerHTML=TrimPath.processDOMTemplate(number_src.id, result); } }); return false; //返回false,不post到index.do}//index.doString number = someObj.getNumber();//假定返回正确的值.....