【发布时间】:2026-02-10 14:45:02
【问题描述】:
为了清楚起见,我使用的是 MongoDB、Express、React 和 Node 堆栈。
我现在正在尝试学习 react.js。我掌握了正确的基础知识,并且能够使用路由器编写一个简单的反应应用程序。我还尝试过在服务器端渲染一个简单的反应应用程序,它也可以完美运行。但是,我现在有点卡住了,因为我想制作一个带有 rest api 和服务器端渲染的完整应用程序。
1) 我不知道应该如何在服务器文件中分离 api 和 react 代码。会从列出 api 调用开始,然后进行服务器端渲染工作吗? 像这样:
app.get('/api/whatever', function(req, res) {
//get whatever
});
app.get('*', function(req, res) {
//math routes and renderToString React
});
2)另外,我什至无法测试上述内容的原因是,当我尝试使用 nodemon 运行服务器时,它会抛出错误,因为它不理解反应代码,我应该怎么做呢?我应该以某种方式配置 nodemon 以读取 es6 还是忽略它或配置 webpack 以运行 express 服务器?
3) 最后一个问题可以很容易地弄清楚整个故事。我试图找到一个答案,但得到了许多相互矛盾的答案。谷歌爬虫是否能够爬取 React 应用程序?我正在学习 SEO 的服务器端渲染,真的有必要吗?
抱歉问题太长了,期待阅读您的回答。
【问题讨论】:
-
你在第二个 app.get 函数中给出了什么响应?
-
app.get("*",function(req, res){ ReactRouter.match({routes:AppRoutes, location:req.url}, function(err, redirectLocation, renderProps){ if ( err) { res.send(500, err.message) } else if (redirectLocation) { res.redirect(302, redirectLocation.pathname + redirectLocation.search) } else if (renderProps) { res.send(200, ReactDOMServer.renderToString (
)) } else { res.send(404, 'Not found') } }); }); -
我将在问题中添加整个函数作为编辑。这看起来不对...
-
是的,nodemon 显示的错误是什么?
标签: rest reactjs express server-side-rendering mern