V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
zarte
V2EX  ›  问与答

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

  •  
  •   zarte · 2020-07-02 22:01:18 +08:00 · 857 次点击
    这是一个创建于 1632 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    6 条回复    2020-07-03 15:16:53 +08:00
    FaceBug
        1
    FaceBug  
       2020-07-02 23:42:14 +08:00   ❤️ 1
    1 、写一个校验脚本,html 里的<和>数量要匹配,花点心思还能做个自动补全的功能

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

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

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

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

    另外记得 sanitize,执行 HTML 基本上是安全问题的重灾区。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2535 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 10:57 · PVG 18:57 · LAX 02:57 · JFK 05:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.