reactjs - 在社交媒体上分享,网址不呈现任何元数据
问题描述
我们在 React .net 核心中使用客户端渲染中的 react 构建了一个项目(Web 应用程序)。
我们使用 react-helmet 来动态分配元标记。
问题是应用程序在浏览器中呈现的时间。浏览器在初始加载时仅获取静态 HTML,其中不包括我们设置的动态元标记。但是,在检查时,您会在“元素”下获得这些元标记。
此外,如果我们使用这些 URL 在任何社交媒体(如 WhatsApp 或 Facebook)上共享,则该 URL 不会呈现任何应有的元数据。
尝试为我们的问题寻找解决方案,我们遇到的最明显的答案是尝试使用服务器端渲染。我们明白了,但是当我们准备好使用应用程序推出它时,这不是一个尝试的解决方案。
我们遇到的其他人是“react-snap”,“react-snapshot”,但是 react-snap 没有运气,它需要将 React 的版本升级到 16+,我们这样做了,但我想并不是所有的依赖项都升级了,有一个错误说“
水合物不是函数
(水合物涉及反应域)
使用 react-snapshot,我们找不到必要的类型定义,这是 react .net 核心正常运行所必需的
请指导下一个可能的步骤(除了预渲染等付费步骤)?
主要目标:当我们在其中粘贴/共享 URL 时,社交应用程序应该呈现元数据。
解决方案
预渲染是唯一的解决方案。 我使用了一个名为“prerender”的节点依赖项-> https://github.com/prerender/prerender
它可以启用一个可以发出 http 请求的 Web 服务器。为布尔值赋值:window.prerenderReady = true; 在您的网站中告诉您的服务器页面何时准备好“拍照”,并在准备好时返回 Html。您需要编写一个简单的脚本来解析所有站点 url 并将这些 html 内容保存到文件中。将它们上传到您的服务器并使用 .htaccess 或类似的目标爬虫 external-hit-facebook、twitterbot、googlebot 等。向其余用户代理显示预渲染版本和“真实站点”。
它对我有用。
推荐阅读
- azure-devops - 板下工作项中的自定义字段
- flutter - 使用 Android Studio 中的“Alt+Enter”快捷方式,Flutter 无法使用“删除小部件”选项
- discord.py - Discord Bot 可以拥有 gmail 帐户吗?
- c# - DataGridView 多线程更新崩溃
- sql - 如何使用linq在excel上导出数据?
- python - 如何根据 Tkinter 中窗口的大小不截断长文本
- python - 为什么没有显示python plotly box-plot y轴?
- android-studio - 如何在android studio中解决这个问题?
- xamarin.forms - 设置列表视图项模板的背景颜色和列表背景颜色时,Xamarin Forms Listview 选定项背景颜色丢失
- flutter - 如何在颤动中返回现有的平台视图