论坛首页 Web前端技术论坛

[原创]Ajax和LazyLoad的冲突

浏览 19973 次
该帖已经被评为良好帖
作者 正文
   发表时间:2006-09-26  
我并不觉得是java把简单的事情复杂化了。

而是本来就能够各自很好运行的机制,放到一起发生了冲突。Service facade是个解决冲突的办法,但是我觉得不太爽,本来很好的lazyloading机制,到了这里确要被一刀给砍断。

还有一个就是避免出现这种情况,尽量不要用 ajax获得服务器端对象,虽然这种方式很新潮,可是我不喜欢,因为获得了服务器端对象就说明肯定要动态生成dom,js来生成dom可是一件很麻烦的事情,难调试,难维护。所以我在项目中尽量都是只更新局部,把整个页面分成几个区域(几个块),需要更新那块,就直接一个Ajax.Updater("id","xx.action")就可以了,而且调试和维护都远比操作dom简单。

0 请登录后投票
   发表时间: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操作。
0 请登录后投票
   发表时间:2006-09-27  
不好意思,可能我的描述不是很准确--“操作生成dom”

我所说的生成dom就是利用js动态生成html。

我们从服务器端获取dto用来干什么? 获取数据不就是为了展示么?这种情况下,你能避免不用js来生成html吗?

我并不反对通过js来获取服务器端dto对象,而是说尽量避免,当你从服务器端获取dto并展示给客户端的时候,用一堆js来生成html代码,然后在放到某个div中,你就会知道这种方法有多么的难调试,难维护了。

用js固然少不了dom操作,但希望楼主明白我得意思,我的意思是尽量避免,而不是不做。
0 请登录后投票
   发表时间:2006-09-27  
foxty 写道
不好意思,可能我的描述不是很准确--“操作生成dom”

我所说的生成dom就是利用js动态生成html。

我们从服务器端获取dto用来干什么? 获取数据不就是为了展示么?这种情况下,你能避免不用js来生成html吗?

我并不反对通过js来获取服务器端dto对象,而是说尽量避免,当你从服务器端获取dto并展示给客户端的时候,用一堆js来生成html代码,然后在放到某个div中,你就会知道这种方法有多么的难调试,难维护了。

用js固然少不了dom操作,但希望楼主明白我得意思,我的意思是尽量避免,而不是不做。


强烈建议开发团队中有至少一个js高手,不然就不要提ajax了。那样只会让你更低生产效率,而不是更高。成为js高手不是你想得那么难,利用google,你可以搜到无数的源码用来学习。
0 请登录后投票
   发表时间: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 编程框架,至少我们现在的项目自己动手做了一个,有了规范适合大家一起做开发。
0 请登录后投票
   发表时间: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框架一起,我觉得就很不错了。

0 请登录后投票
   发表时间: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技术问题,很多类库都已经提供了很好的调用,而是设计思路或者说解决方法的问题。
0 请登录后投票
   发表时间:2006-09-28  
foxty 写道
其实很多时候并不是需不需要要一个js高手的问题,现在的一些应用并不涉及到多深的js技术问题,很多类库都已经提供了很好的调用,而是设计思路或者说解决方法的问题。

假如你要做的系统有复杂的用户交互界面,那么我看你不大可能完全用现成js包,来完成所有界面。桌面应用开发领域的MFC够强了吧,但是你如果不能熟练调用windows api,你还是写不出具备良好交互性的界面,或者说因为MFC的限制,让你某些界面上的想法实现不了。何况,现成的js包远没有MFC库来得强大
0 请登录后投票
   发表时间:2006-09-28  
hexiaodong 写道
foxty 写道
其实很多时候并不是需不需要要一个js高手的问题,现在的一些应用并不涉及到多深的js技术问题,很多类库都已经提供了很好的调用,而是设计思路或者说解决方法的问题。

假如你要做的系统有复杂的用户交互界面,那么我看你不大可能完全用现成js包,来完成所有界面。桌面应用开发领域的MFC够强了吧,但是你如果不能熟练调用windows api,你还是写不出具备良好交互性的界面,或者说因为MFC的限制,让你某些界面上的想法实现不了。何况,现成的js包远没有MFC库来得强大
迄今为止,我还没有遇到想你所说的需求,大部分的应用,现在的js类库也可以胜任了.

0 请登录后投票
   发表时间:2006-09-29  
用remote就应该准备相应的DTO

另,lazy load和open session in view本来就是罪恶的东西
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics