无论出于什么考虑,永远别在 JS 中拼接 HTML 字符串... but why?

2013-05-24 15:02:25 +08:00
 akinoniku
Whatever templating strategy you end up with, it's nice if you never have to put strings of HTML in your JavaScript.

出自 http://backbonejs.org/

那是什么考虑? 是防XSS? 好维护? 还是别什么原因?
8826 次点击
所在节点    程序员
50 条回复
kingwkb
2013-05-24 15:04:19 +08:00
最佳的做法是什么呢?
lyric
2013-05-24 15:14:44 +08:00
嗯,防XSS而且好维护

@kingwkb 最佳做法当然是用模版了。

推荐 AngularJS 的 DOM 模版。
darasion
2013-05-24 16:00:28 +08:00
感觉js做的拼接或者模板,都有点不可靠。
alexrezit
2013-05-24 16:02:29 +08:00
目测星祈娘快要完工了...
ipconfiger
2013-05-24 16:03:31 +08:00
一般都在局部用underscore.js的模板。
bitsmix
2013-05-24 16:05:16 +08:00
@lyric angularjs 有独立出来的模板了额???
ghbjy1128
2013-05-24 16:22:42 +08:00
我用胡子,好用的佷。
akinoniku
2013-05-24 16:23:56 +08:00
@alexrezit 其实是考虑到对你项目的扩展-> restful -> js模板 -> 单页webapp -> backbonejs

结论是,不知道要不要重新做一下界面?

https://www.dropbox.com/s/m7cfpo6xggj0u8c/xqn%205.png

(flat ui 又有阴影,检讨)
jasya
2013-05-24 16:50:41 +08:00
AngularJS 的学习成本太高了
loading
2013-05-24 16:58:03 +08:00
我不知道restful是什么,有人举个简单例子说明下么…
juicy
2013-05-24 17:49:32 +08:00
。。。从backbone文档里那句话的上下问来看,这句话的作用纯粹是推荐你使用模板来拼接字串,而不要费劲自己去拼接(因为那样很繁琐,不便于维护)。

这句话传递出来的语气应该是这样的:“甭管你最后用什么模板,只要你用模板来实现,而不是自己去吃力不讨好地拼啊拼,那我心里就舒畅了(要不我看着都纠结死了。。。)“

什么防XSS啊,那是想太多了吧。。。
akinoniku
2013-05-24 18:30:01 +08:00
@loading
通俗点说应该是把这个对应起来,然后服务器的/route/[id]请求,返回json
create → POST
read → GET
update → PUT
delete → DELETE

也就是说服务器不是返回页面或者其他东西了,返回只是纯碎的数据。


当然这个说法也不太科学。。
lyric
2013-05-24 19:26:08 +08:00
@bitsmix 没独立出来,我的意思就是直接用 angularJS 啊哈哈哈

@akinoniku 做 WebApp 我一定要推荐 AngularJS 啊。我两个月前花了几天把一个 4k CoffeeScript 的项目从 Spine 移植到 Angular

@jasya 不高,一下午走一遍官方教程而已。
bitsmix
2013-05-24 20:29:14 +08:00
@lyric 我也想呢。。 不可能独立出来嘛!
我也力挺 angular 一站式解决方案啊简直就是。
reusFork
2013-05-24 20:53:31 +08:00
你理解错这句话的意思了。它只是说把html放在模版文件里,比放在js里更nice而已
模版的实现当然会涉及字符串操作,怎么可能永远不用
hxgdzyuyi
2013-05-24 21:08:15 +08:00
@lyric 你现在是angular粉呀。 我觉得angular太重了~
lyric
2013-05-24 21:16:40 +08:00
@hxgdzyuyi 不重啊。才80kb。可以像用jQ一样用它,也可以像用一个框架一样用它
alexrezit
2013-05-24 21:17:47 +08:00
@akinoniku
其实现在还没开工咱会乱讲?
倒是折腾了些别的东西...
hxgdzyuyi
2013-05-24 21:36:03 +08:00
@lyric 两个jquery那么大吧~ 重的方面觉得 它好像把很多功能都实现了,实现了一个大而全的框架~ 当然不是说不好, 只是觉得并不是很对我的胃口。 目前还是偏向于可以像积木一样用很多小库堆起来。感觉替换的空间会更大。 更灵活
lyric
2013-05-24 22:31:57 +08:00
@hxgdzyuyi jQuery 1.9 min 96kb... angularJS 80kb ...

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

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

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

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

© 2021 V2EX