关于javascript:expressjs渲染没有任何引擎的html文件

expressjs render html file without any engine

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

1
2
3
4
5
6
7
8
9
10
11
12
13
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");
})


您不需要渲染引擎来提供像html文件这样的静态资源。 你应该重新考虑在不同的请求上提供什么,但是你想要什么,你必须将你的静态资产放在一个目录中,并告诉明确他们在哪里这样

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

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