V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
proxytoworld
V2EX  ›  问与答

最近在开发自己的博客,遇到一个问题:富文本怎么存入数据库,表内字段怎么规划?以及怎么知道一个文章里面的图片是那些,在什么位置?

  •  
  •   proxytoworld · May 29, 2021 · 3372 views
    This topic created in 1807 days ago, the information mentioned may be changed or developed.
    21 replies    2021-05-31 17:43:37 +08:00
    opengps
        1
    opengps  
       May 29, 2021
    富文本本身还是字符,不过考虑到这一列数据的长度不确定,使用 text 之类的类型存储,尽可能将内容表配合外键单独一个表存储,不读内容时候不读取这个表
    至于图片,其实富文本里只是一个引用路径,实际图片文件存储并不在富文本里,而是在网站相应的目录或者第三方存储里
    loading
        2
    loading  
       May 29, 2021
    下载一个 wordpress,装上,学习一下结构就知道了。
    富文本最后存下来就是 html,用 text 字段就行了。

    建议你用 markdown 呢,时髦一些。
    Kaciras
        3
    Kaciras  
       May 29, 2021
    文本就存原始的比如 Markdown,前端拿到后再渲染成 HTML 。
    找图片搞个正则扫一遍文章即可。
    内容直接存文章表里就行,没必要抠这个性能,你一篇文章能写多少字?
    proxytoworld
        4
    proxytoworld  
    OP
       May 29, 2021
    @loading 打算用 tinymce
    shiweiliang
        5
    shiweiliang  
       May 29, 2021
    问这些问题,你别做程序员了。
    forgottencoast
        6
    forgottencoast  
       May 29, 2021
    上面这些人说的都是简单的实现方式。
    如果你想研究高大上的,可以研究 Word 是怎么用 xml 来表达的。
    aristolochic
        7
    aristolochic  
       May 29, 2021
    上面有人提到 Wordpress,那我来说说 Ruby on Rails 的。Rails 做法是正文放在带有多态关联的独立富文本表,附件表也是多态关联。Rails 集成到什么地步?这些东西开箱即用,在模型里标注就行。这样的好处是富文本和附件逻辑可复用,富文本能够做一些变换比如纯文本化之类的,我之前做搜索高亮就是把纯文本丢给 PostgreSQL,建立全文搜索索引,搜的时候由 PostgreSQL 生成<mark>标签。附件也不是硬编码而是有 Variants 的,比如如果你用对象存储的话可以设置有水印 /无水印、是正文用的高清还是列表用的缩略图,以及一些动态生成下载原图的临时链接啥的(本地文件存储也有)。劣势显而易见就是复杂,如果不是用高集成度的系统帮你处理这些复杂度,或者未来扩展空间不大的话,完全没必要。要说参考的话可以看看 sanitizing 是怎么做的(其实……就是记着做就行)。
    GG668v26Fd55CP5W
        8
    GG668v26Fd55CP5W  
       May 29, 2021 via iPhone
    看看 Wordpress 里的 posts 表,我当时写 cms 时也参考了,有一个 post_content 字段,就是存这个的。
    不过它还有一些特殊的 short code,取出渲染到前台时要作一些转换。
    LeslieLeung
        9
    LeslieLeung  
       May 29, 2021 via iPhone
    我前端把 markdown 渲染成 html 存的,图片存在图床,简单快捷
    LittleSharkDaDa
        10
    LittleSharkDaDa  
       May 30, 2021 via iPhone
    我最近使用 notion 记笔记,可以直接导出 html,比 markdown 要丰富好看很多。带图片的话也是用超链接到图片文件位置这样。
    呃,希望能对楼主建立博客有点帮助
    itechify
        11
    itechify  
    PRO
       May 30, 2021 via Android
    丢静态存储 oss,费用很低
    NilChan
        12
    NilChan  
       May 30, 2021 via Android
    @shiweiliang 什么鬼,不懂就问,这也能喷?
    iozephyr
        13
    iozephyr  
       May 30, 2021 via iPhone
    支持 11 楼说的用对象存储,开源方案可以看看 Ceph 、Minio
    matrix67
        14
    matrix67  
       May 30, 2021
    @LeslieLeung #9 那要更新 md 的时候咋处理 jira 的那个 confluence 好像是这么处理的,只能编辑富文本了
    proxytoworld
        15
    proxytoworld  
    OP
       May 30, 2021
    @wayne233 可以直接用 notion 做博客 但是那就太。。
    proxytoworld
        16
    proxytoworld  
    OP
       May 30, 2021
    @LeslieLeung 敢问用的什么渲染的
    LeslieLeung
        17
    LeslieLeung  
       May 30, 2021 via iPhone
    @matrix67 #14 还是同一个库 可以把 html 再转回去 md
    LeslieLeung
        18
    LeslieLeung  
       May 30, 2021 via iPhone
    @proxytoworld #16 md->html 用的 marked,html->md 用的 turndown,都是 js 的库
    proxytoworld
        19
    proxytoworld  
    OP
       May 31, 2021
    @LeslieLeung 学习了
    proxytoworld
        20
    proxytoworld  
    OP
       May 31, 2021
    @LeslieLeung 你渲染的 html 会存到后端吗
    LeslieLeung
        21
    LeslieLeung  
       May 31, 2021 via iPhone
    @proxytoworld #20 就是把 html 存到后端
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1654 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 50ms · UTC 16:21 · PVG 00:21 · LAX 09:21 · JFK 12:21
    ♥ Do have faith in what you're doing.