Code Bye

动态生成部分html代码:js生成 VS jstl标签生成

    很多情况下,我们的项目都需要动态地生成部分的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
引用 1 楼 xinlan1022 的回复:

因为js生成是:服务器传js代码过来,客户端生成html;这种方式不太用哦,一般跨域的时候会这样用。一般都是后台取得要显示的数据,页面用标签来进行显示,到页面上要做一些dom操作的时候就用jquery

dom操作用jq,这个我知道。
如果生成小量的html代码,这个用js生成是可以的;
但我想问的是循环一个重复html代码块的时候(如:我从后台拿到一个list,我要将list里面的对象显示出来),哪种比较好一点,貌似js麻烦但性能好,jstl好用但性能差。(不知道是不是)
求解


20分
为了后期维护个人觉得应该使用jstl标签,首先做一个东西,后期维护不可避免,为了后期的维护,那么这样很有必要,其次 ,你说的速度的问题,现在的项目都是部署在服务器的,那么生成代码的速度对于js生成代码的速度显然是很小的了
引用 3 楼 zy353003874 的回复:

为了后期维护个人觉得应该使用jstl标签,首先做一个东西,后期维护不可避免,为了后期的维护,那么这样很有必要,其次 ,你说的速度的问题,现在的项目都是部署在服务器的,那么生成代码的速度对于js生成代码的速度显然是很小的了

你说的也有道理;
生成的速度是差不多,但是从服务器传到客户端的数据量不同,一个是传js代码,一个是传大量重复的html代码,明显后者的比较多;
不过确实好维护很多,大家都赞成用jstl比较好吗?


5分
看个人取舍了

10分
需要看你的数据是怎么来的,有些时候用JSTL,有些时候用JQ,的看数据是怎么来的,我们两种方式都用
JSTL一个foreach搞定,JQ不也是一个for搞定吗?
引用 6 楼 Inhibitory 的回复:

需要看你的数据是怎么来的,有些时候用JSTL,有些时候用JQ,的看数据是怎么来的,我们两种方式都用
JSTL一个foreach搞定,JQ不也是一个for搞定吗?

对,我也是两种混合着用的;
但是就是对于循环的这种情况,我到底用jstl的foreach还是用jq的for呢

项目管理要综合考虑技术通用性、后续维护成本之类的问题。

比如:
◎ 发明该技术的人如果离职了,其它人接手是否很快很方便?
◎ 该项目以后可不可以交给成本更低的人维护,比如来个大专毕业生?
◎ 经常性的有些需求小变化,是否可以很快调整?调试复杂度高么?部署快么?


10分
数据量很大么?  

如果很大,大到会影响服务器反应速度,导致网页一直在load, 那么你可以用js去生成,
但是你想过js的维护了么?  可能你自己写的,你能看懂,但是如果换一个人接手,他能看懂么?

如果不是很复杂,建议使用jstl

引用 9 楼 shijing266 的回复:

数据量很大么?  

如果很大,大到会影响服务器反应速度,导致网页一直在load, 那么你可以用js去生成,
但是你想过js的维护了么?  可能你自己写的,你能看懂,但是如果换一个人接手,他能看懂么?

如果不是很复杂,建议使用jstl

有道理


10分
补充一句。方案没有绝对优劣,都是为目标服务的。

在你的系统没有很高兴能要求的情况下,尽量选择通用性强、复杂度低、成熟性高 的大众技术方案。

因为没有看到你顶楼提及性能要求,所以我比较赞成你主管的观点。


10分
解决可读性。
<script type=""anything"" id=""sth"">
<div>any HTML code</div>
</script>

对于你说的可维护性,jq代码对于前端开发人员来说很容易维护…
可能是因为我不懂jstl,所以这样觉得

你确定用标签生成 会有性能问题?
引用 13 楼 wanghualeilei 的回复:

你确定用标签生成 会有性能问题?

也不能说性能有问题,但是我两种都做了,对比了一下,js生成是比jstl生成要快。

我说的标签不是指jstl   是自定义taglib
引用 15 楼 wanghualeilei 的回复:

我说的标签不是指jstl   是自定义taglib

jstl标签难道不是taglib标签的一种


5分
你说的list 集合 数据量大吗??如果很大很容易导致浏览器崩溃的,另外响应速度也慢,  而且在显示方面你还要先在后台转成json格式再传给前台。。
jstl在服务器上 性能很差吗??可以优化代码或者数据库表的呀。。
引用 17 楼 ch656409110 的回复:

你说的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生成),服务器返回的数据量更少。

引用 12 楼 xiaopeipei2004 的回复:

解决可读性。

<script type=""anything"" id=""sth"">
<div>any HTML code</div>
</script>

对于你说的可维护性,jq代码对于前端开发人员来说很容易维护…
可能是因为我不懂jstl,所以这样觉得

有道理
请教一下,你那段script怎么用的

引用 11 楼 ldh911 的回复:

补充一句。方案没有绝对优劣,都是为目标服务的。

在你的系统没有很高兴能要求的情况下,尽量选择通用性强、复杂度低、成熟性高 的大众技术方案。

因为没有看到你顶楼提及性能要求,所以我比较赞成你主管的观点。

有道理


10分
$(“”#scriptid””).html();
可以这样使用。
有两个优点,
代码整齐可读性强;
浏览器不加载,不影响性能(与display=none的div等container相比较)
引用 21 楼 xiaopeipei2004 的回复:

$(“”#scriptid””).html();
可以这样使用。
有两个优点,
代码整齐可读性强;
浏览器不加载,不影响性能(与display=none的div等container相比较)

受教了

凑个热闹

10分
1. 量多时,不建议用JS。 太不直观,难维护了。 
2. 建议用标签,一般情况下, 生成html的资源消耗可忽略。 由标签生成HMTL后, 可考虑静态化,那样, 一次生成后,后面直接取就行了。(当然得有一个静态化文件的维护问题)。 另外,可考虑用其他的模板技术,如velocity、freemarker等, 他们在执行上好像是快于JSP。

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明动态生成部分html代码:js生成 VS jstl标签生成