我即将开始一个新的项目,并希望加入React,因为我想了解更多关于它的信息,这个特定的项目将是完美的开始,因为它不是那么时间敏感和非常直接。
为了处理SEO,我收集到我需要走同构的路线(这对我来说是全新的)来呈现JS服务器端。我发现this 但我不知道如何将其应用到基于Wordpress的web应用程序中?我一直在谷歌上搜索有关如何使用Wordpress和React的信息,但实际上没有相关信息。有谁能给我提供一些建议和建议吗?
谢谢
我即将开始一个新的项目,并希望加入React,因为我想了解更多关于它的信息,这个特定的项目将是完美的开始,因为它不是那么时间敏感和非常直接。
为了处理SEO,我收集到我需要走同构的路线(这对我来说是全新的)来呈现JS服务器端。我发现this 但我不知道如何将其应用到基于Wordpress的web应用程序中?我一直在谷歌上搜索有关如何使用Wordpress和React的信息,但实际上没有相关信息。有谁能给我提供一些建议和建议吗?
谢谢
我不认为使用React。js无节点。js(或至少V8或rhino等)算作同构,因为同构意味着您正在构建JavaScript to run in the browser AND on the server. 具体来说,使用WordPress肯定意味着您没有使用同构javascript(其PHP软件)。
您可以使用WordPress作为REST API服务器,并使用React作为客户端。现在你可以让WordPress交付你的资产,但你也可以把它放在一个子目录中,只把它当作一个带有CMS管理区域的API应用程序,而把你的站点文件放在根目录中,只需传递配置主题即可。(SEO将成为您必须解决的另一个问题,这取决于您正在开发的应用程序的类型。)
您提到了SEO和服务器端呈现,所以我认为您收集到的部分是希望将编译后的html交付给爬虫(而不是他们无法理解的JS),但WordPress在默认情况下会这样做(虽然是使用PHP,而不是JavaScript,因此也不是同构),但如果您只关心SEO,则不需要严格地使用同构。
你可以让WordPress的主题输出你搜索引擎优化所需的一切(最低限度),然后加载你的React(或Angular或whathaveyou),用支持JavaScript的浏览器(通过引导/DOM替换)为人类构建你的应用程序。然后,您还必须注意您的路由是否与WordPress的永久链接匹配,这有点棘手。与同构不同,但足够好。
或者,您可以使用React。js只是“增强”主题(比如评论部分),但此时您主要是PHP/WordPress开发人员。
同构就像流星。js和类似的项目,让您特别避免使用PHP(并避免使用WordPress)。真的互斥。如果你真的对同构感兴趣,试试Meteor。避免使用WordPress。
我认为我们离以一种非常明智的方式实现这一目标已经不远了。WordPress。com网站已already moved over 到一个由REST API和节点支持的JavaScript应用程序。js和React。
将核心WordPress软件转移到像这样的新技术需要时间,但如果您添加插件,如WordPress REST API 您应该拥有在WordPress中开始使用React所需的一切。
我一直在Rails中构建一个大量使用react JS的应用程序。这是一个很好的项目,因为它让我对React的工作原理有了基本的了解。知道我对React的了解,我强烈建议不要将其与WP一起使用,直到你一开始就掌握了它,我认为这会让你的学习过程更长,尝试将其编入WP。
将React与Wordpress相结合就像是将超级跑车驶离公路。也许先学开超级跑车吧。
这是我今天刚刚遇到的一个例子。
我们两个。com已经建立了具有相同要求的站点,其来源可在此处找到。
https://github.com/ustwo/ustwo.com-frontend
也有一个很好的描述,他们如何设置它。见下图。
免责声明:这不是一个真正的答案,但更多的是一个参考链接,应该作为评论添加,如果我有足够的信用:-)您要做的是通过放置一个节点来实现。wordpress API前面的js服务器。您需要节点。js在服务器上进行服务器端反应。
Here 是一些代码,显示如何在服务器上将wordpress内容呈现为React组件,以及如何在客户端附加相同的React组件。
请注意,在这种情况下,您可以使用wordpress创建内容,但不能用于发布。您需要从头开始作为React组件实现发布。
我在wordpress页面中添加了一些自定义javascript文件。我把它们放在函数中。php如下所示: wp_register_script(\'formfunctions\', get_template_directory_uri() . \'/js/formfunctions.js\', array( \'jquery\' )); wp_enqueue_script( \'formfunctions\' ); wp_register_script(\'java1\', g