reactjs - 为 React 站点设置 Wordpress 博客
问题描述
我有一个用 react js 构建的网络应用程序。我想将 Wordpress 博客设置为domain.com/blog 路径。
现在我正在使用 Apache 来托管网站(使用 AWS 上的 Elastic Beanstalk 托管),我们很快计划实施服务器端渲染,因此最终将使用 Node + Express。
实施它的正确方法应该是什么?我应该在负载均衡器端处理它还是需要调整 React 路由以实现它?
编辑 - 我有 domain.com 的应用程序负载均衡器(网络应用程序)。我还有一个不同的 Wordpress 博客 EC2 实例,我需要从 domain.com/blog 访问。现在我的痛点是 domain.com/blog 将成为 React Router 的有效路由,但我需要将 domain.com/blog 指向托管 Wordpress 博客的 EC2 实例。
解决方案
我创建了一个反应启动器,你可以从这里下载。解决方案也在另一个分支上。您可以下载文件,运行 yarn 或 npm install(无论您喜欢哪个),然后运行 yarn start 或 npm run start。您将看到我们的简单页面,但会注意到没有任何内容。让我们开始并添加一些内容。
安装必要的软件包
如果我们打开 package.json 文件,我们可以看到我已经包含了 react、react-dom 和 bulma 来构建我们的前端。在我们进一步使用我们的 react js 应用程序之前,我们需要添加更多的包。
我们可以添加Axios,它是一个允许我们从应用程序发出 http 请求而没有任何麻烦的包。React-router可用于创建路由,这意味着我们可以在不刷新浏览器的情况下切换页面或组件。要安装这两个包,我们可以在终端中使用以下代码:
npm install axios react-router
将 React Router 添加到 App.js 文件
现在我们已经安装了新的包,我们需要在 app.js 文件中设置 react-router 来告诉我们的浏览器在地址栏中输入不同的路径时应该显示什么。首先,我们需要从文件顶部的 react-router 导入我们需要的部分。在导入的底部,添加以下代码:
import { BrowserRouter as Router, Route, Link } from 'react-router-dom';
现在我们已经导入了 react-router,我们可以使用这些组件来设置路由。我们当前的 app.js 文件看起来像这样:
import React from "react";
import ReactDOM from "react-dom";
import Header from "./components/header";
const App = () => (
<div>
<Header />
<section className="section container content">
<h1>Hello World</h1>
</section>
</div>
);
ReactDOM.render(<App />, document.getElementById("app"));
要将路由器添加到我们的 app.js 组件,我们需要将最外层包装在一个组件中,以便我们可以设置应用程序的路由。然后我们可以用这两条路由替换我们的标签:
<Route exact path="/" component={PostList} />
<Route path="/:slug" component={PostView} />
让我们分解一下:
我们的第一个路由告诉 reactjs 在用户访问主路由( http://localhost:1234)时显示一个名为 PostList 的组件。确切属性意味着它需要精确匹配这个路由,这意味着如果我们之后有任何东西,它就不会去这个路由。
当用户访问通配符路由时,第二个路由将显示一个名为 PostView 的组件。:slug 表示斜杠后面的任何字符串在我们的应用程序中都是不同的路由。在我们的例子中,这个字符串或 slug(因为这是我们命名的)将是 TechCrunch 博客文章的 slug。我们的 app.js 文件现在应该如下所示:
import React from "react";
import ReactDOM from "react-dom";
import { BrowserRouter as Router, Route, Link } from "react-router-dom";
import Header from "./components/header";
import PostList from "./components/postList";
import PostView from "./components/postView";
const App = () => (
<Router>
<div>
<Header />
<section className="section container content">
<Route exact path="/" component={PostList} />
<Route path="/:slug" component={PostView} />
</section>
</div>
</Router>
);
ReactDOM.render(<App />, document.getElementById("app"));
接下来我们需要创建PostList
和PostView
组件并将它们导入到app.js
组件中。
推荐阅读
- javascript - Web 应用程序上的 Google 可视化时间线图
- reactjs - react-router-dom,如何跳过后退按钮
- java - 无法使用 RecyclerView 从 firebase 查看单个用户数据
- automation - 自动化:应用程序触发器执行另一个应用程序
- go - 使用 HTTP 200 OK 防止超出上下文期限(等待标头时超出 Client.Timeout)错误
- kubernetes - Istio ServiceEntry 和 VirtualService 重定向到主机
- python - 如何用 Python 编写简单的 Pross Pay?
- python - 如何在凸多边形的周长上生成随机/均匀点?
- python - 在 python 中绘图时如何自定义轴?
- linux - NFTABLES 如何防止在使用具有相同钩子的多个基链时进一步评估基链中的接受