使用PHP

时间:2016-01-03 03:33:58

标签: javascript php wordpress reactjs serverside-rendering

我想基于WordPress开发React的主题/插件。为了使搜索引擎友好,我需要在服务器上初始化它(服务器端渲染)。

据我所知,执行此操作的唯一方法是使用react-php-v8js,这需要PECL V8js extension。这是一个问题,因为我无法控制将运行这些主题/插件的平台。

有没有办法让ReactWordPress一起工作,而无需安装额外的扩展程序?也许通过构建/编译React文件到PHP

3 个答案:

答案 0 :(得分:2)

有一篇文章介绍了如何执行此操作:

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

但这是一个相当复杂的设置,需要使用composer。由于Wordpress倾向于完全避开现代php体系结构,因此在Wordpress项目中可能很难做到这一点。

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

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

祝你好运。

答案 1 :(得分:0)

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

理想的一个是让React为您生成内容。但是我们很难看到nodejs / PECL V8js扩展在任何地方都可用。

答案 2 :(得分:0)

如果您至少可以安装nodejs并启动节点进程,那么就可以了,尽管不是那么简单。

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

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

仅此而已。

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