我正在为客户端编写一个使用 react
并为服务器端使用 express
的 Web 应用程序。
我正在使用 react-router
( link ) 路由客户端页面。
使用 hashHistory
很简单并且工作正常,但现在我想使用 browserHistory
。
如 react-router
教程中所述,我需要告诉我的服务器等待客户端请求,因此当我们呈现客户端页面时,它将服务器 index.html
.
我找不到一种方法来处理来自客户端的页面请求和服务器处理请求。
例如,我在路径 /product
中有一个页面,但我也有一个用于服务器处理 /authenticate
的端点。
在 react-router
教程中,它说要使用以下内容:
// server.js
// ...
// add path.join here
app.use(express.static(path.join(__dirname, 'public')))
// ...
app.get('*', function (req, res) {
// and drop 'public' in the middle of here
res.sendFile(path.join(__dirname, 'public', 'index.html'))
})
但这种方式会导致每个请求(包括/authenticate
)将其发送回index.html
。如何合并这两者?
最佳答案
您必须在 *
之前定义 /authenticate
(这基本上是一个 Catch-All,必须放在最后)
app.use(express.static(path.join(__dirname, 'public')))
ap.get('/authenticate', function (req, res) {
res.sendStatus(200)
});
// ...
app.get('*', function (req, res) {
// and drop 'public' in the middle of here
res.sendFile(path.join(__dirname, 'public', 'index.html'))
})
关于javascript - 使用服务器路由 react 路由器浏览器历史记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36799283/