需要同时运行 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(单页面应用程序)?