锁定老帖子 主题:[原创]Ajax和LazyLoad的冲突
该帖已经被评为良好帖
|
|
---|---|
作者 | 正文 |
发表时间:2006-09-26
我并不觉得是java把简单的事情复杂化了。
而是本来就能够各自很好运行的机制,放到一起发生了冲突。Service facade是个解决冲突的办法,但是我觉得不太爽,本来很好的lazyloading机制,到了这里确要被一刀给砍断。 还有一个就是避免出现这种情况,尽量不要用 ajax获得服务器端对象,虽然这种方式很新潮,可是我不喜欢,因为获得了服务器端对象就说明肯定要动态生成dom,js来生成dom可是一件很麻烦的事情,难调试,难维护。所以我在项目中尽量都是只更新局部,把整个页面分成几个区域(几个块),需要更新那块,就直接一个Ajax.Updater("id","xx.action")就可以了,而且调试和维护都远比操作dom简单。 |
|
返回顶楼 | |
发表时间:2006-09-27
foxty 写道 我并不觉得是java把简单的事情复杂化了。
而是本来就能够各自很好运行的机制,放到一起发生了冲突。Service facade是个解决冲突的办法,但是我觉得不太爽,本来很好的lazyloading机制,到了这里确要被一刀给砍断。 还有一个就是避免出现这种情况,尽量不要用 ajax获得服务器端对象,虽然这种方式很新潮,可是我不喜欢,因为获得了服务器端对象就说明肯定要动态生成dom,js来生成dom可是一件很麻烦的事情,难调试,难维护。所以我在项目中尽量都是只更新局部,把整个页面分成几个区域(几个块),需要更新那块,就直接一个Ajax.Updater("id","xx.action")就可以了,而且调试和维护都远比操作dom简单。 麻烦解释下什么叫操作生成dom? 用js获得服务器端的DTO是一个非常常见的做法,你硬是要批判它我觉得很幼稚。获得对象跟生成DOM我不清楚有什么联系在里面。再说,AJAX = Asynchronized JavaScript And XML,你用js的时候我不信你不进行任何dom操作。 |
|
返回顶楼 | |
发表时间:2006-09-27
不好意思,可能我的描述不是很准确--“操作生成dom”
我所说的生成dom就是利用js动态生成html。 我们从服务器端获取dto用来干什么? 获取数据不就是为了展示么?这种情况下,你能避免不用js来生成html吗? 我并不反对通过js来获取服务器端dto对象,而是说尽量避免,当你从服务器端获取dto并展示给客户端的时候,用一堆js来生成html代码,然后在放到某个div中,你就会知道这种方法有多么的难调试,难维护了。 用js固然少不了dom操作,但希望楼主明白我得意思,我的意思是尽量避免,而不是不做。 |
|
返回顶楼 | |
发表时间:2006-09-27
foxty 写道 不好意思,可能我的描述不是很准确--“操作生成dom”
我所说的生成dom就是利用js动态生成html。 我们从服务器端获取dto用来干什么? 获取数据不就是为了展示么?这种情况下,你能避免不用js来生成html吗? 我并不反对通过js来获取服务器端dto对象,而是说尽量避免,当你从服务器端获取dto并展示给客户端的时候,用一堆js来生成html代码,然后在放到某个div中,你就会知道这种方法有多么的难调试,难维护了。 用js固然少不了dom操作,但希望楼主明白我得意思,我的意思是尽量避免,而不是不做。 强烈建议开发团队中有至少一个js高手,不然就不要提ajax了。那样只会让你更低生产效率,而不是更高。成为js高手不是你想得那么难,利用google,你可以搜到无数的源码用来学习。 |
|
返回顶楼 | |
发表时间:2006-09-27
foxty 写道 不好意思,可能我的描述不是很准确--“操作生成dom”
我所说的生成dom就是利用js动态生成html。 我们从服务器端获取dto用来干什么? 获取数据不就是为了展示么?这种情况下,你能避免不用js来生成html吗? 我并不反对通过js来获取服务器端dto对象,而是说尽量避免,当你从服务器端获取dto并展示给客户端的时候,用一堆js来生成html代码,然后在放到某个div中,你就会知道这种方法有多么的难调试,难维护了。 用js固然少不了dom操作,但希望楼主明白我得意思,我的意思是尽量避免,而不是不做。 我理解你的意思了,给你点思路吧。 采用一个模版引擎,封装一个好的调用方式。 一个大概的调用过程是这样: 1、请求服务器某个 action 获取数据,最好是 json 的。(异步) 2、请求服务器获取 html 模版(同步),将模版存到本地缓存(用JS实现一个),使用数据渲染模版,加到某个 div 中去。 3、根据操作再去走第一步。 这是一个简易的框架,我们项目目前在使用,使用 Trimpath JavaScript 可以达到模版的效果,并不需要自己用 js 操作 dom,让 JST 帮你做,这样更自然。 AJAX 需要一个合理的客户端 MVC 编程框架,至少我们现在的项目自己动手做了一个,有了规范适合大家一起做开发。 |
|
返回顶楼 | |
发表时间:2006-09-27
Nicholas_Ding 写道 foxty 写道 不好意思,可能我的描述不是很准确--“操作生成dom”
我所说的生成dom就是利用js动态生成html。 我们从服务器端获取dto用来干什么? 获取数据不就是为了展示么?这种情况下,你能避免不用js来生成html吗? 我并不反对通过js来获取服务器端dto对象,而是说尽量避免,当你从服务器端获取dto并展示给客户端的时候,用一堆js来生成html代码,然后在放到某个div中,你就会知道这种方法有多么的难调试,难维护了。 用js固然少不了dom操作,但希望楼主明白我得意思,我的意思是尽量避免,而不是不做。 我理解你的意思了,给你点思路吧。 采用一个模版引擎,封装一个好的调用方式。 一个大概的调用过程是这样: 1、请求服务器某个 action 获取数据,最好是 json 的。(异步) 2、请求服务器获取 html 模版(同步),将模版存到本地缓存(用JS实现一个),使用数据渲染模版,加到某个 div 中去。 3、根据操作再去走第一步。 这是一个简易的框架,我们项目目前在使用,使用 Trimpath JavaScript 可以达到模版的效果,并不需要自己用 js 操作 dom,让 JST 帮你做,这样更自然。 AJAX 需要一个合理的客户端 MVC 编程框架,至少我们现在的项目自己动手做了一个,有了规范适合大家一起做开发。 你说的这种方式也跟我现在采取的方式差不多,不过我是将页面需要变动的地方分成了几个块,客户端一般情况下只需要异步请求服务器端的action来替换对应的块就可以了。 做了一些关于ajax的web应用,确实感觉到项目中如果要大量使用ajax的话,需要一个很完善的MVC框架同时结合服务器端的MVC框架一起,我觉得就很不错了。 |
|
返回顶楼 | |
发表时间:2006-09-27
hexiaodong 写道 foxty 写道 不好意思,可能我的描述不是很准确--“操作生成dom”
我所说的生成dom就是利用js动态生成html。 我们从服务器端获取dto用来干什么? 获取数据不就是为了展示么?这种情况下,你能避免不用js来生成html吗? 我并不反对通过js来获取服务器端dto对象,而是说尽量避免,当你从服务器端获取dto并展示给客户端的时候,用一堆js来生成html代码,然后在放到某个div中,你就会知道这种方法有多么的难调试,难维护了。 用js固然少不了dom操作,但希望楼主明白我得意思,我的意思是尽量避免,而不是不做。 强烈建议开发团队中有至少一个js高手,不然就不要提ajax了。那样只会让你更低生产效率,而不是更高。成为js高手不是你想得那么难,利用google,你可以搜到无数的源码用来学习。 其实很多时候并不是需不需要要一个js高手的问题,现在的一些应用并不涉及到多深的js技术问题,很多类库都已经提供了很好的调用,而是设计思路或者说解决方法的问题。 |
|
返回顶楼 | |
发表时间:2006-09-28
foxty 写道 其实很多时候并不是需不需要要一个js高手的问题,现在的一些应用并不涉及到多深的js技术问题,很多类库都已经提供了很好的调用,而是设计思路或者说解决方法的问题。
假如你要做的系统有复杂的用户交互界面,那么我看你不大可能完全用现成js包,来完成所有界面。桌面应用开发领域的MFC够强了吧,但是你如果不能熟练调用windows api,你还是写不出具备良好交互性的界面,或者说因为MFC的限制,让你某些界面上的想法实现不了。何况,现成的js包远没有MFC库来得强大 |
|
返回顶楼 | |
发表时间:2006-09-28
hexiaodong 写道 foxty 写道 其实很多时候并不是需不需要要一个js高手的问题,现在的一些应用并不涉及到多深的js技术问题,很多类库都已经提供了很好的调用,而是设计思路或者说解决方法的问题。
假如你要做的系统有复杂的用户交互界面,那么我看你不大可能完全用现成js包,来完成所有界面。桌面应用开发领域的MFC够强了吧,但是你如果不能熟练调用windows api,你还是写不出具备良好交互性的界面,或者说因为MFC的限制,让你某些界面上的想法实现不了。何况,现成的js包远没有MFC库来得强大 |
|
返回顶楼 | |
发表时间:2006-09-29
用remote就应该准备相应的DTO
另,lazy load和open session in view本来就是罪恶的东西 |
|
返回顶楼 | |