javascript - expressjs 无需任何引擎即可渲染 html 文件

标签 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");
})

最佳答案

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

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

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

关于javascript - expressjs 无需任何引擎即可渲染 html 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21545585/

相关文章:

javascript - JSP 中的 javascript 代码有问题吗?

node.js - npm 包安装在意外的位置

使用express JS进行JSON漏洞防护

javascript - 如何在同一端口上设置 React 应用程序和 API?

javascript - 为什么我可以执行 array[3].toUpperCase(),但是当 n=3 (或任何数字)时 array[n].toUpperCase() 会出错

javascript - 如何在 JavaScript 中只删除父元素而不删除其子元素?

javascript - 在 ExpressJS 中使用带有数组的 JSON

javascript - 在 Azure 应用服务上使用 Node 和 Express 进行路由

javascript - 相同的 Controller 并解析不同的状态

node.js - 如何在一台VPS服务器上运行多个独立的Loopback应用程序?