expressjs 在没有任何引擎的情况下渲染 html 文件

0 javascript node.js express

我是 nodejs 和 expressjs 的新手我正在尝试开发一个简单的登录页面,它在表单中包含一个用户名字段和一个密码。在提交表单时,我会将用户重定向到主页,在那里我将显示消息欢迎用户-用户名。我希望登录页面和主页都是简单的 html 文件。登录页面中的表单将操作设置为 home.html,因此当用户提交表单时,我可以使用 res.body.userName 和 res.body.password 获取用户名和密码。我的问题是如何使用 express 来呈现 html 文件。我知道我可以使用 res.sendfile 函数发送 html 文件,但 sendfile 函数不支持将变量共享到 html 文件。我已经在 app.js 中发布了我的代码

var http = require("http");
var express = require("express");
var app = express();
app.use(express.bodyParser());
app.all("/",function(req,res,next){
    res.render("login.html");
});
app.all("/home.html",function(req,res,next){
    res.render("home.html",{"userName":req.body.userName});
})
http.createServer(app).listen(3000,function(){
    console.log("Listening at port 3000");
})
Run Code Online (Sandbox Code Playgroud)

Sco*_*oss 5

您不需要渲染引擎来提供像 html 文件这样的静态资产。您应该重新考虑根据不同请求提供的内容,但是对于您想要的内容,您必须将静态资产放在一个目录中并告诉 express 它们的位置

app.use(express.static('public'));
Run Code Online (Sandbox Code Playgroud)

假设您的服务器文件在根目录上,并且您public在根目录上也有一个文件夹,请将您的 html 文件放在该文件夹中。默认情况下,express 将index.html在该公用文件夹的底部查找一个文件,并GET根据对/. 您通过提供登录页面来覆盖它。没关系。你必须使用res.sendfile('/path/to/file')而不是res.render()