关于论坛帖子样式存储设计问题

2020-07-02 22:01:18 +08:00
 zarte

是采用类似 md 格式存储然后显示的时候后端渲染后输出,还是保存的时候额外存一个渲染好的内容字段显示的时候直接读取?
或者采用 html 编辑的方式,但这种方式人为输入未闭合标签之类的问题怎么解决?

795 次点击
所在节点    问与答
6 条回复
FaceBug
2020-07-02 23:42:14 +08:00
1 、写一个校验脚本,html 里的<和>数量要匹配,花点心思还能做个自动补全的功能

2 、可以在保存的时候,标记是 MD 还是 html,同时兼容两种模式

3 、MD 保存的时候,请保存一份原始的 MD 格式,因为涉及到日后编辑帖子的场景,再存储一份根据 MD 生成一份 html 这样就减少读取的时候开销,因为毕竟论坛是读远大于写的场景
luckyrayyy
2020-07-02 23:43:28 +08:00
最好保存原内容吧,那样万一网站的渲染方式发生变化,还方便修改渲染结果。
namelosw
2020-07-02 23:49:46 +08:00
如果用户编辑 md 就存 md 。

如果像大部分网站一样,靠按钮改样式,或者能粘贴就 WYSIWYG 的 HTML 就存 HTML 。
此外有些编辑器还能让用户改 HTML 源码,这种情况未闭合就按未闭合存就行了。
zarte
2020-07-03 09:45:19 +08:00
@cepczkd 谢谢
zarte
2020-07-03 09:47:41 +08:00
@cepczkd
@namelosw
再问下,如果用户输入<p>sdfsd<div>sds</p> 这样的内容咋处理呀? ie 上显示的话可能会导致页面异常不?
namelosw
2020-07-03 15:16:53 +08:00
@zarte 异常不异常看浏览器吧,像 Chrome 这种兼容好的就无所谓,兼容不好的肯定会很多异常。但是 JS 应该不会挂,只是渲染有问题。我理解这种东西不用处理吧。

假如允许用户输 HTML,那么当他的本来就是错的时候,没道理给他修好啊。他要是少输好多东西,还要给他脑补上吗……

另外记得 sanitize,执行 HTML 基本上是安全问题的重灾区。

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

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

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

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

© 2021 V2EX