我想基于WordPress
开发React
的主题/插件。为了使搜索引擎友好,我需要在服务器上初始化它(服务器端渲染)。
据我所知,执行此操作的唯一方法是使用react-php-v8js,这需要PECL V8js extension。这是一个问题,因为我无法控制将运行这些主题/插件的平台。
有没有办法让React
和WordPress
一起工作,而无需安装额外的扩展程序?也许通过构建/编译React
文件到PHP
?
答案 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。