我们在客户端渲染中使用react在.net核心中构建了一个项目(Web应用程序)。
我们已经使用react-helmet来动态分配元标签。
问题在于应用程序在浏览器中呈现的时间。浏览器仅在初始加载时获取静态HTML,其中不包含我们设置的动态元标记。但是,在检查时,您会在“元素”下获得这些元标记。
此外,如果我们使用这些URL在任何社交媒体(如WhatsApp或Facebook)上共享,则URL不会呈现应有的任何元数据。
试图寻找解决方案,我们遇到的最明显的答案是尝试服务器端渲染。我们知道了,但是当我们准备好将应用程序推出时,尝试在此关头尝试并不是解决方案。
我们遇到的其他内容是“反应快照”,“反应快照”,但没有运气 使用react-snap,它需要将React的版本升级到16+,这是我们做到的,但我想并不是所有的依赖项都已升级,出现错误提示“
水合物不是功能
(水合物与反应域有关)
使用react-snapshot,我们无法找到必需的类型定义,这是react .net核心正常运行所必需的
请为下一步可能的步骤提供指导(预付款等已付款的除外)?
主要目标:当我们在其中粘贴/共享URL时,社交应用程序应呈现元数据。
答案 0 :(得分:4)
Prerender是唯一的解决方案。 我使用了一个称为“ prerender”的节点依赖性-> https://github.com/prerender/prerender
它可以启用发出http请求的Web服务器。将值分配给布尔值:window.prerenderReady = true;您的网站中的告诉您的服务器页面何时可以“拍照”,并在返回时返回HTML。您需要编写一个简单的脚本来解析所有站点url,并将这些html内容保存到文件中。将它们上传到您的服务器,并使用.htaccess或类似目标将爬虫外部-hit-facebook,twitterbot,googlebot等作为目标。以向其他用户代理显示预渲染的版本和“真实站点”。
对我有用。
答案 1 :(得分:2)
Open Graph的元标记必须存在于HTML中,当获取URL时,该元标记会发送回客户端。浏览器或漫游器不会等到应用程序呈现在客户端确定元标记是什么-它们只会查看最初加载的HTML。
如果您需要开放图元数据的内容是动态的(动态)(根据URL,设备,浏览器等显示不同的内容),则需要向其中添加react-meta-tags之类的内容您的服务器代码。
任何React meta标签库都没有类型定义,但是您可以添加自己的类型定义。可能有些棘手,但请查看official documentation和the templates they have provided入门。
如果不需要是动态的,则可以将标签添加到index.html中<head>
标签的静态部分。
答案 2 :(得分:1)
我今天有同样的问题。我有两个需要此的React Web应用程序。这是我的解决方法:
index.html
,添加行<meta property="og:image" content="preview.png"/>
或<meta property="og:image" content="%PUBLIC_URL%/preview.png"/>
。 转到https://www.linkedin.com/post-inspector/检查它是否有效。
我希望这会有所帮助!