首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何防止格式错误的html在SSR渲染反应项目中破坏DOM?

如何防止格式错误的html在SSR渲染反应项目中破坏DOM?
EN

Stack Overflow用户
提问于 2022-12-04 19:17:25
回答 1查看 11关注 0票数 0

我正在尝试呈现内容创建者提供的内容。有些内容格式错误,破坏了DOM。例如,内容包括未关闭的标记和其他我还找不到的原因。我应该实现格式错误的内容不会影响DOM树的其他部分。我使用SSR来呈现内容,所以我应该在服务器端找到一个解决方案。你有糖吗?

我尝试使用影子DOM,但服务器端不支持它。

另外,纠正这个html页面并防止添加格式错误的html也是可行的解决方案,您也有任何建议来验证html吗?

EN

回答 1

Stack Overflow用户

发布于 2022-12-04 19:39:39

为了防止格式错误的HTML破坏DOM树,一种解决方案是使用能够处理无效HTML并从错误中恢复的解析器。其中一个解析器是来自HTML5 Parser库的html5lib。此解析器可以处理范围广泛的无效HTML并从错误中恢复,因此生成的DOM树仍然具有良好的格式,并且可以正确地呈现。

下面是如何使用HTML5 Parser解析和呈现格式错误的HTML内容的示例:

代码语言:javascript
复制
import React from "react";
import { parse as parseHtml } from "html5lib";
import { renderToString as render } from "react-dom/server";

const MyContent = ({ content }) => {
  const dom = parseHtml(content, { tree: true });
  return <div>{render(dom)}</div>;
};

在本例中,我们使用来自parseHtml库的html5lib函数来解析给定的内容并创建DOM树。然后,我们使用来自renderToStringreact-dom/server函数将DOM树转换为可以通过在服务器上进行反应而呈现的一串HTML。

另一种解决方案是使用像cheerio这样的库来解析HTML内容并在呈现之前清理它。cheerio是核心jQuery API的一个快速、灵活和精益的实现,可用于操纵和解析服务器上的jQuery内容。下面是一个示例,说明如何使用cheerio在使用React呈现之前清除格式错误的HTML:

代码语言:javascript
复制
import React from "react";
import cheerio from "cheerio";
import { renderToString as render } from "react-dom/server";

const MyContent = ({ content }) => {
  const $ = cheerio.load(content);
  // Use cheerio to manipulate and clean up the HTML content
  // ...
  const html = $.html();
  return <div>{render(html)}</div>;
};
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74680077

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档