很多情况下,我们的项目都需要动态地生成部分的html代码,之前一直用jq生成,不断的append进去,但有一次被项目主管批评过,说用jq生成大量的html代码不好。
而且,我个人感觉,这样做也是不好维护,毕竟维护html代码,需要去jq那里看,而且也不好看。
第二种方法,就是jsp的标签库如jstl,用一个foreach就可以循环生成一些html了,而且好看好维护,但是,有一个缺点就是,jsp标签库本质上是java代码来的,性能上应该比不上js生成的速度吧(因为js生成是:服务器传js代码过来,客户端生成html;而jstl标签生成是:服务器生成html,再将html传到客户端)。
所以,现在就纠结了。
不惜重分求看法。
|
10分 |
因为js生成是:服务器传js代码过来,客户端生成html;这种方式不太用哦,一般跨域的时候会这样用。一般都是后台取得要显示的数据,页面用标签来进行显示,到页面上要做一些dom操作的时候就用jquery
|
|
dom操作用jq,这个我知道。
如果生成小量的html代码,这个用js生成是可以的;
但我想问的是循环一个重复html代码块的时候(如:我从后台拿到一个list,我要将list里面的对象显示出来),哪种比较好一点,貌似js麻烦但性能好,jstl好用但性能差。(不知道是不是)
求解
|
20分 |
为了后期维护个人觉得应该使用 jstl标签,首先做一个东西,后期维护不可避免,为了后期的维护,那么这样很有必要,其次 ,你说的速度的问题,现在的项目都是部署在服务器的,那么生成代码的速度对于js生成代码的速度显然是很小的了
|
|
你说的也有道理;
生成的速度是差不多,但是从服务器传到客户端的数据量不同,一个是传js代码,一个是传大量重复的html代码,明显后者的比较多;
不过确实好维护很多,大家都赞成用jstl比较好吗?
|
5分 |
看个人取舍了
|
10分 |
需要看你的数据是怎么来的,有些时候用 JSTL,有些时候用JQ,的看数据是怎么来的,我们两种方式都用
JSTL一个foreach搞定,JQ不也是一个for搞定吗?
|
|
对,我也是两种混合着用的;
但是就是对于循环的这种情况,我到底用jstl的foreach还是用jq的for呢
|
|
项目管理要综合考虑技术通用性、后续维护成本之类的问题。
比如:
◎ 发明该技术的人如果离职了,其它人接手是否很快很方便?
◎ 该项目以后可不可以交给成本更低的人维护,比如来个大专毕业生?
◎ 经常性的有些需求小变化,是否可以很快调整?调试复杂度高么?部署快么?
|
10分 |
数据量很大么?
如果很大,大到会影响服务器反应速度,导致网页一直在load, 那么你可以用js去生成,
但是你想过js的维护了么? 可能你自己写的,你能看懂,但是如果换一个人接手,他能看懂么?
如果不是很复杂,建议使用jstl
|
|
有道理
|
10分 |
补充一句。方案没有绝对优劣,都是为目标服务的。
在你的系统没有很高兴能要求的情况下,尽量选择通用性强、复杂度低、成熟性高 的大众技术方案。
因为没有看到你顶楼提及性能要求,所以我比较赞成你主管的观点。
|
10分 |
解决可读性。
<script type=""anything"" id=""sth"">
<div>any HTML code</div>
</script>
对于你说的可维护性,jq代码对于前端开发人员来说很容易维护…
可能是因为我不懂jstl,所以这样觉得
|
|
|
|
也不能说性能有问题,但是我两种都做了,对比了一下,js生成是比jstl生成要快。
|
|
我说的标签不是指jstl 是自定义taglib
|
|
jstl标签难道不是taglib标签的一种
|
5分 |
你说的list 集合 数据量大吗??如果很大很容易导致浏览器崩溃的,另外响应速度也慢, 而且在显示方面你还要先在后台转成json格式再传给前台。。
jstl在服务器上 性能很差吗??可以优化代码或者数据库表的呀。。
|
|
你误解我的意思了
客户端浏览网页,需要从服务器获取html、js和css等代码到客户端解析显示吧
先补充一个基础知识:自定义jsp标签(如:jstl)的实质是在jsp上写<% java代码 %>,也就是servlet根据jsp里面的java逻辑生成html代码返回客户端;jsp里面的html代码也是servlet生成返回到客户端的;
但其实html代码不一定要从服务器返回的,可以根据服务器返回的js,客户端再根据js生成html代码。
所以现在的问题是那部分循环重复的html代码是服务器生成返回(即jstl生成),还是客户端生成(js生成),那个好?
从代码实现上看,jstl更容易看懂,更好维护。
但从返回的html代码量上看,明显客户端生成(即js生成),服务器返回的数据量更少。
|
|
有道理
请教一下,你那段script怎么用的
|
|
有道理
|
10分 |
$(“”#scriptid””).html();
可以这样使用。
有两个优点,
代码整齐可读性强;
浏览器不加载,不影响性能(与display=none的div等container相比较)
|
|
受教了
|
|
凑个热闹
|
10分 |
1. 量多时,不建议用 JS。 太不直观,难维护了。
2. 建议用标签,一般情况下, 生成html的资源消耗可忽略。 由标签生成HMTL后, 可考虑静态化,那样, 一次生成后,后面直接取就行了。(当然得有一个静态化文件的维护问题)。 另外,可考虑用其他的模板技术,如velocity、freemarker等, 他们在执行上好像是快于 JSP。
|