【问题标题】:expressjs render html file without any engineexpressjs 在没有任何引擎的情况下渲染 html 文件
【发布时间】:2023-04-05 12:59:02
【问题描述】:

我是 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");
})

【问题讨论】:

  • 为此你需要一个渲染引擎,比如jade或ejs
  • HTML 不是模板语言,只是纯粹的标记。 EJS 是最接近纯 HTML 且能够添加变量的东西。

标签: javascript node.js express


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2019-09-14
    • 1970-01-01
    • 1970-01-01
    • 2018-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多