首页 新闻 会员 周边 捐助

多图文的文章怎么存进数据库

0
悬赏园豆:20 [待解决问题]

我想做一个博客,但是数据库要怎么存储文章内容来方便前端渲染。
假设我有一篇文章是
【标题】
【内容】
【图片】
【代码】
【图片】
【内容】
【图片】

这种情况 有图文穿插的文章,

如果文字图片分开存,到时候前端拿到的数据是

data:[{img:"",img2:"",img3:"",txt:"",txt2:"",txt3:""}]

怎么知道图片穿插在那个文字的后边呢

请教一下各位,这种情况怎么处理的

Recoveryccx的主页 Recoveryccx | 初学一级 | 园豆:182
提问于:2024-07-17 16:27
< >
分享
所有回答(7)
0

————-————————富文本

彼时今日 | 园豆:541 (小虾三级) | 2024-07-17 16:48

或者使用markdown也行

支持(0) 反对(0) 彼时今日 | 园豆:541 (小虾三级) | 2024-07-17 16:50

@彼时今日: 感谢回答,我没这方面的知识。我去搜搜看

支持(0) 反对(0) Recoveryccx | 园豆:182 (初学一级) | 2024-07-17 18:36
1

图片和文字分开存,没问题啊,相当于 文本和图片文件单独存储, 图片实际上在文本中是个url,你只需要把图片上传到服务器 ,然后获取到这个地址,赋值在内容中就可以了。

试试看先~

一周一志 | 园豆:202 (菜鸟二级) | 2024-07-17 18:00

那怎么渲染呢,怎么知道这段文字下面有几张图片呢?这个图片是不是在这段文字的下边呢?我没搞懂这个

支持(0) 反对(0) Recoveryccx | 园豆:182 (初学一级) | 2024-07-17 18:03

@Recoveryccx: 可能你没理解我的意思, 图片先上传 得到url1、url2、url2放在你的文案中。
基础太弱了, 可能我这么说你不太能明白,你再看看吧

支持(0) 反对(0) 一周一志 | 园豆:202 (菜鸟二级) | 2024-07-17 18:07

@一周一志: 感觉你没明白我的意思。就是如果我是个通用模板我怎么渲染呢,每篇文章的图片跟文字位置都不一样。假设有一篇文章是【文字】【图片】【文字2】【图片2】【图片3】【文字3】,另一篇文章是【文字】【图片】【图片】【文字】【图片】,那通用模板要怎么写呢?然后你说的数据库分开存,也打乱了原本的文章结构,要怎么还原呢

支持(0) 反对(0) Recoveryccx | 园豆:182 (初学一级) | 2024-07-17 18:36

这哥们比较靠谱,也是很多公司技术路线

支持(0) 反对(0) MrSteven | 园豆:200 (初学一级) | 2024-07-23 17:35
0

最经典的就是"*.rtf",也就是所谓的富文本,微软干这行最经典了。
高阶的就是openxml相关的,也就是office文档。也可以转pdf电子书啥的。这类东西其实就是xml相关的节点存储,后来发展成了更为强大的xaml。
当前当前流行的流文档也挺好,markdown,html这类的转换也挺好。

三台 | 园豆:404 (菜鸟二级) | 2024-07-18 10:08
0

你看看博客园这个回复里面怎么混放图片和文字,这不是一个很好的例子吗。图片就是url,后面再渲染。

lannoy | 园豆:233 (菜鸟二级) | 2024-07-18 14:11
0

直接存html就可以

楠木大叔 | 园豆:2083 (老鸟四级) | 2024-07-19 07:35
0

一般都用富文本编辑器的吧,上传的图片直接就是URL地址存进去的,显示的时候根据URL地址显示图片啊。。。

 

个人有另个想法,也能够把图片转成字节流的方式存进数据库。

lzhdim | 园豆:650 (小虾三级) | 2024-07-21 21:36
0

继续探讨:图文混排文章的数据库设计与前端渲染

深入分析问题

对于图文混排的文章,我们需要考虑以下几个方面:

  • 内容多样性: 除了文字和图片,可能还会有视频、音频、嵌入式代码等其他类型的内容。
  • 布局复杂性: 文章的布局可能非常灵活,有不同的标题级别、列表、表格等。
  • 性能优化: 对于大量内容的文章,需要考虑如何优化数据库查询和前端渲染性能。

解决方案

1. 数据库设计优化

  • 引入内容类型字段: 可以增加一个字段来表示内容块的类型,例如:text、image、video、code、embed等。
  • 考虑使用 JSON 或 XML: 对于结构比较复杂的布局,可以将内容块的样式信息等存储为 JSON 或 XML格式,方便前端解析。
  • 添加索引: 为经常查询的字段(如文章id、类型、排序)添加索引,提高查询效率。

2. 前端渲染

  • 数据结构转换: 将后端返回的数据转化为前端框架(如 React、Vue)能够直接使用的格式,比如一个数组,每个元素表示一个内容块,包含类型、内容、样式等信息。
  • 组件化: 将不同的内容类型抽象成不同的组件,比如文本组件、图片组件、代码组件等。
  • 虚拟DOM: 使用虚拟DOM技术,高效地更新页面。
  • 富文本编辑器: 如果需要用户在前端编辑文章,可以选择一个功能强大的富文本编辑器,它可以帮助用户创建复杂的布局。

3. 示例代码(Node.js+Express+MySQL+React)

后端(Node.js+Express):

// 获取文章内容
app.get('/articles/:id', async (req, res) => {
    const { id } = req.params;
    const [rows] = await pool.query('SELECT * FROM content_blocks WHERE article_id = ?', [id]);
    res.json(rows);
});

前端(React):

import React from 'react';

function Article({ content }) {
  return (
    <div>
      {content.map((block) => {
        switch (block.type) {
          case 'text':
            return <p key={block.id}>{block.content}</p>;
          case 'image':
            return <img key={block.id} src={block.content} alt="" />;
          // ...其他类型
        }
      })}
    </div>
  );
}

进一步优化

  • 缓存: 可以使用缓存技术(如 Redis)来缓存文章内容,减少数据库查询次数。
  • CDN: 可以使用 CDN 来加速静态资源(如图片)的加载。
  • SEO优化: 对于SEO优化,可以生成静态HTML页面,或者使用SSR(服务端渲染)。
  • 富文本编辑器的选择: 选择一个适合的富文本编辑器,可以大大提高编辑效率。

总结

通过合理设计数据库结构和前端组件,可以实现图文混排文章的灵活存储和高效渲染。需要注意的是,具体的实现方式会根据项目的需求和技术栈有所不同。

其他可考虑的因素:

  • 版本控制: 如果需要支持文章的版本控制,可以增加版本号字段。
  • 权限控制: 可以添加用户权限控制,限制不同用户对文章的编辑权限。
  • 搜索功能: 可以建立全文索引,支持文章内容的搜索。

希望这个回答能够帮助您更好地解决问题。如果您还有其他问题,欢迎随时提出!

您想深入了解哪个方面的内容呢? 比如:

  • 特定数据库的优化技巧
  • 前端框架的选择和使用
  • 富文本编辑器的推荐
  • SEO优化策略
Donald_Trump | 园豆:231 (菜鸟二级) | 2024-11-05 17:07
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册