20

我想为WordPress基于React. 为了使它对搜索引擎友好,我需要它最初在服务器上呈现(服务器端呈现)。

据我所知,做到这一点的唯一方法是使用react-php-v8js,它需要PECL V8js 扩展。这是一个问题,因为我无法控制运行这些主题/插件的平台。

有没有一种无需安装额外扩展即可制作React和协同工作的方法?WordPress也许通过将React文件构建/编译到PHP?

4

3 回答 3

2

有一篇文章描述了如何做到这一点:

https://sebastiandedeyne.com/server-side-rendering-javascript-from-php/

但这是一个相当复杂的设置,需要使用作曲家。这在 Wordpress 项目中可能很困难,因为 Wordpress 倾向于完全避开现代 php 架构。

如果您正在寻找一个库来帮助 PHP 中的 SSR:

https://github.com/spatie/server-side-rendering

祝你好运。

于 2020-03-04T00:05:30.663 回答
0

如果你希望你的内容在没有 js 的情况下被搜索引擎索引,你可以使用 Wordpress 打印你的最小内容,只是最简单的 + 关键元标记,也许本地化一些初始状态以让你的 react 应用程序启动。像http://underscores.me/这样的简单主题就足够了。当 js 可用时,您可以用 React 替换整个 WordPress 生成的内容。

理想的做法是让 React 为您生成内容。但是很难直到我们看到 nodejs / PECL V8js 扩展随处可用。

于 2017-04-12T09:02:36.700 回答
-1

如果你至少可以安装 nodejs 并启动一个 node 进程,那么它应该没问题,虽然不是那么简单。

您需要生成资产的 ssr 版本并在节点进程中使用它,该进程将侦听套接字以写入 html 结果。

在您的控制器中,您可以为您的节点进程创建一个套接字(类似于 stream_socket_client(...)),然后您可以将一个写为 javascript 字符串的虚拟函数发送到该套接字(类似于 stream_socket_sendto($sock, "getResultForMyWidget(someParams ){...}"))。该函数将在节点进程中进行评估,该进程会将响应返回给控制器(作为 ReactDOMServer.renderToString 的 html 响应来自您要呈现的组件)。

这就是大局。

有一个 symfony 插件非常清楚地说明了它(参见这个 github)并带有一个虚拟服务器节点进程来说明它如何处理套接字侦听和传入函数的 eval 并返回 html 结果。另请参阅沙箱中的示例以获取更大的图景和深度实现。您应该能够使其适应 wordpress。

于 2019-09-10T14:40:58.447 回答