有没有用 js 创建 dom 的库

2015-08-05 10:01:11 +08:00
 tommark

我需要用js动态生成一组页面ui,用jquery.html(这里需要一大串html代码,太恶心了),有没有方便的库可以实现这个功能?

4453 次点击
所在节点    JavaScript
49 条回复
haozhang
2015-08-05 10:06:07 +08:00
你可以用前端模版引擎
Wenwei
2015-08-05 10:30:40 +08:00
你可以试一下underscore.js
zythum
2015-08-05 10:35:17 +08:00
话说怎么着你都要写一堆html代码。不管自己拼字符串还是用模版引擎(模版引擎说白了就是用一些语法糖来帮你拼字符串...)(会不会有人说用jade不算html...)
总不能你每个createElement吧...
sbabybird
2015-08-05 10:40:46 +08:00
可以使用ExtJS,他所有ui都是用js生成的,可是有些太重了,不知是否符合你的需求。前端模板引擎也是个不错的方式,比如template.js
hkongm
2015-08-05 10:43:14 +08:00
react jsx :D
moe3000
2015-08-05 10:47:38 +08:00
react.js+1
learnshare
2015-08-05 10:47:42 +08:00
Angular.js 也可以动态渲染模板
johnhsm2333
2015-08-05 11:53:39 +08:00
最简单就是用 underscore.js 中的 _.template()
litpen
2015-08-05 12:50:46 +08:00
模版引擎都有这功能,支持外部文件引用
gongpeione
2015-08-05 12:53:09 +08:00
react+2
dong3580
2015-08-05 12:55:03 +08:00
如果是表格之类的话可以考虑 angular 渲染
viowan
2015-08-05 12:56:39 +08:00
react+3
leopku
2015-08-05 13:03:12 +08:00
react +4

rivets +1
jsblocks +1
riot +1
sox
2015-08-05 13:05:31 +08:00
zhea55
2015-08-05 14:47:24 +08:00
@zythum 只有每一个都createElement过的人,才能体会为什么react比较好,怎样渲染dom效率高。

不然一开始就用一些类库渲染,永远不知道哪种东西好,为什么好。
zythum
2015-08-05 15:37:47 +08:00
@zhea55 - -. 归根到底,生成节点就只有createElement然后往里插 和 innerHTML... 其他没有了(而且现在的浏览器优化程度还不知道谁效率高,各个浏览器不一样)。react mount的时候一样是innerHTML。 innerHTML 怎么着都方便一些还能避免浏览器的一些报错。

怎么简单怎么来。所以用拼字符串,还是用模版引擎生成,还是用react这样的大框架。要看po主的上下文环境。不能一棍子拍死。

就比方我就出门打个酱油,是坐飞机呢,还是做汽车呢,还是自行车呢,还是走路呢...
zhea55
2015-08-05 15:52:57 +08:00
@zythum createElement是在内存中一个个创建元素,innerHtml接受一堆字符串,需要对字符串进行解析,哪一种效率高,不言而喻。

react的本质也是在调用createElement这样的方法,只是他用jsx这种比较友好的方式,完成了对dom结构的描述。

react是innerHTML? 你能静下心来读读别人的文档么?不要不懂装懂。
latyas
2015-08-05 17:16:25 +08:00
React
newghost
2015-08-05 17:31:44 +08:00
http://ourjs.com/detail/52357116091f7f5303000002

小心变量冲突!

h1('HTML Creation');

p('Tags are functions.')

p('Attributes are objects...', {
style:{fontStyle:'italic'}
})

ul(function(){
li('Nest');
li('with');
li('functions!');
});
xujif
2015-08-05 17:47:36 +08:00
@zhea55 你的《不言而喻》不能让人信服,前提是浏览器傻乎乎的一个个解析然后createElement,但是实际上浏览器可能是对这段“html”进行编译优化。在c层面进行dom树构建反而比在js这边效率更高。
js里一个一个createElement实际上没有给浏览器留下任何的优化余地。所以html大于一定长度,我猜是html效率更高,或者,未来肯定html效率更高

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/210884

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX