需要同时运行 Symfony + React JS 和 WordPress

Posted

技术标签:

【中文标题】需要同时运行 Symfony + React JS 和 WordPress【英文标题】:Need To Run Symfony + ReactJS & WordPress Together 【发布时间】:2017-10-06 14:38:03 【问题描述】:

对于我们的项目,我们决定使用 Symfony 应用程序和 WordPress 博客。它基本上将整个 WordPress 安装运行为 Symfony 的 /web 文件夹内名为 /blog 的子目录。

我们在 www.example.com/ (Symfony Route: /) 上设置了一个即将推出的快速页面,并在 www.example.com/blog/ 上继续运行 WordPress 博客

关于我关于 WordPress 作为 Symfony 子目录的问题的详细信息: WordPress As A Symfony (Symfony3) Subdirectory

在开发过程中,我们让 Symfony 支持 REST API 并使用 ReactJS 开发应用程序前端。我对部署非常不确定。这将如何运作?

注意:我无法将 WordPress 显示为 React 前端和 WordPress REST API,因为现在有超过 200 篇文章是使用主题提供的页面构建器设计的(经验教训)。

我有什么选择?

【问题讨论】:

【参考方案1】:

您必须创建 React 应用程序的缩小版本并从 twig 模板加载它。如果您使用任何 React 路由器,则必须处理面板的基本 url 以使 url 有效。

例如,如果您使用本地服务器进行开发: 本地主机:3000/my/fancy/panel

在生产中可能会发生此 url 变为

www.yourdomain.com/users/panel/my/fancy/panel

你必须在生产环境中配置你的路由器和路由前缀 /users/panel。

在我的情况下,我在 tpl 或 twig 中注入该基本 url,应用程序不需要关心环境。

您的应用需要显示 Wordpress 帖子?

【讨论】:

我使用 React 路由器并使用 redux 拆分代码,如何在缩小的 js 中创建它?它还处理大约 10-15 条不同的路线,如果我直接打开应用内路线,它们会起作用吗?这是一个相当大的反应应用程序 我使用它作为项目模板来让开发环境和生产任务正常工作。 github.com/jpsierens/webpack-react-redux 关于您的路由问题,如果完整路径相同,它将起作用,否则您将得到一个空白屏幕或 404 错误,具体取决于您在 Symfony 中配置路由的方式。在我的例子中,我设置了一个通配符 url 来将所有流量重定向到 /users/panel/whatever 到 react 应用程序。就 Symfony 而言,这意味着使用 React 应用程序加载面板分支,并让反应路由器处理它。 所以我在 Symfony 路由上使用缩小构建的方法使其工作,感谢您的帮助。但我被 404 问题困住了。假设我有类别路线 www.example.com/category/denim,当我从主页导航到它时它工作得很好,但是如果我刷新同一页面,我会得到一个 Symfony 404。我无法理解你的最后评论我应该怎么做? 那是因为 Symfony 不明白它必须管理路由并且没有为此配置控制器。您需要在 routes.yml 中使用通配符路由,例如 wildcard_route: defaults: _controller: AppBundle:Controllername:controllerFunctionName path: /category/whatever 要求:whatever: .* 默认值:whatever: null 控制器函数只加载带有您的反应应用程序的树枝模板。然后反应路由器将关心路径。

以上是关于需要同时运行 Symfony + React JS 和 WordPress的主要内容,如果未能解决你的问题,请参考以下文章

为啥 create-react-app 会同时创建 App.js 和 index.js?

Symfony 4如何使用React设置SPA(单页面应用程序)?

React Native:始终运行的组件

生产环境中的 Symfony 2 Assetic css 和 js 404

React / Symfony:如何开始我的项目?

NPM 使用 React + Node + 同时运行构建如何?