JavaScript如何避免拼接html字符串?
黄舟
黄舟 2017-04-10 14:55:52
[JavaScript讨论组]

比如类似于这样的代码(或更复杂的拼接结构):

var html = '';

for (var i = 0; i < data.len; i++) {
    html += '

' + data[i] + '

'; } $('#content').html(html);

该如何优化,或者避免这样的拼接循环?感觉这样的循环效率很低。

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全部回复(10)
ringa_lee

题主在题目中描述的主要担忧是效率, 然后一堆同学上来给出了效率更低的方案 (各种 template engine), 一个指出效率不是问题的同学的答案居然还被点了反对,,, 这也是醉了.

首先题主完全不用担心效率, 因为大头在浏览器解析和渲染上 (这两者中的大头又是渲染), 字符串拼接的消耗可以忽略不计. 其次再说各种模板引擎的问题, 题主可以根据自己的需要选择或种或轻的模板引擎, 如果有必要还可以直接上 MVC/MVVM 框架.

伊谢尔伦

如果想生成html code的话,用模版引擎更好一些吧,例如:underscore里的_.template之类的,就能完成你想要的事情,你还不用考虑html拼接

天蓬老师

可以试试 Handlebars.js

巴扎黑

在现代的浏览器里,用+拼接字符串效率已经不低了,题主可以做做实验

黄舟

大家都在推崇前端js模板,我个人更倾向于后端模板。这里比较一下这两者的优劣:
优势:

1. 前端人员完成全部相关工作,与后端只交互数据即可,工作范围划分明确。
2. 前端模板可以把html代码块拆分,重新进行排列组合,更加灵活。

劣势:

1. 前端模板需要浏览器渲染,会出现短暂的空白再跳出来数据,体验不好。而且发送异步请求,肯定会有加载时差,用bigpipe这样的技术去优化也会增加使用的复杂度。
2. 前端模板写出来的代码块与实际调用的地方是分开的,IDE对JS模板插件支持一般不好,阅读代码会有些麻烦。
3. 前端模板html是需要拼接,会与最终生产的代码不一样,而后端模板看到的基本上就是接近于最终html。

后端模板可以选择的有很多,比如FreemarkerJSTLvelocity

第一次给自己答案写这么多评论,再重申一下,当然有些场景是非常适合甚至只能用前端模板的,对于SEO等要求肯定只能用后端模板,而且具体的技术选型也要根据团队的技术储备等众多因素去考虑。

阿神

for (var i = 0; i < data.len; i++) {
var p = $("

");
p.html(data[i]);
html.append(p);
}
$('#content').html(html);

巴扎黑

我也想知道有没有更好的方法

jsvar arr = ['con1', 'con2', 'con3']
var p = '<p>' + arr.join('</p><p >') + '</p>'
console.log(p)
高洛峰

一直在用handlebars

黄舟

有次面试被问到用没用到js 模板,当时好像是没有回答出来啊

PHP中文网

Angular解决妥妥滴

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号