没有视图引擎的Node React结构

3

我刚开始接触node。作为我的视图引擎,我一直在使用express-handlebars,但现在我加入了React,我明白我不再需要handlebars了。我遇到的问题是,为了不使用handlebars访问index.html页面,我必须使用

app.use(express.static('./public'));

所有东西都由react渲染,但如果我想在用户访问首页时做其他事情怎么办,比如说

app.get("/",function(req,res){
    console.log("connected");
});

如果我在导出静态文件之后添加GET请求,那么console.log永远不会被调用。如果我在之前使用它,它确实会被调用,但我可以看到页面一直在加载。既然我现在正在使用React而且我没有了view engine,我应该如何构建我的应用程序结构?
2个回答

0

您可以查看我的代码库https://github.com/kennethmervin01/react-node-production

这是一个在node.js/express中提供react应用程序的样板文件

然后检查app.js中的代码

您只需要将React应用程序的生产构建复制到react文件夹中即可

app.use(express.static(path.join(__dirname, "../react")));
app.get("/*", (req, res) => {
  res.sendFile(path.join(__dirname, "../react", "index.html"));
});

0
在您的特定情况下,如果您不想向用户呈现任何内容,您应该将您的函数转换为中间件:
app.get("/",function(req,res, next){
    console.log("connected");
    next();
});

并将其放置在app.use(express.static('./public'));之前。

但是,如果您想要使用返回值等进行实际逻辑处理,我建议您设置某种API,然后从客户端使用Ajax请求该API。


一个post请求怎么实现?我应该在哪里添加它?和使用next()添加get请求一样吗? - Bogdan Daniel
是的。但是,正如我在回答中提到的那样,您应该给我们更多关于您想要实现的内容的细节,而不是使用console.log。这样我们才能为潜在问题提供一个真实的解决方案建议。 - Telokis
现在我想创建一个聊天应用程序,因为这将帮助我学习最多。我已经添加了socket.io,但我改用了react,因为我也想学习它。我想要理解现在我不再有视图引擎时必须使用的结构。我的意思是当我要发送消息时,难道我不需要一个app.post来接收它吗? - Bogdan Daniel
Socket.io与Express完全独立。您无需以任何方式更改路由。查看官方聊天教程,您将更好地了解如何设置它。 - Telokis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接