如何使用ExpressJS向客户端发送数据

5

我应该如何从expressJS中检索数据?而不会被覆盖或重定向用户。

<html>
    <body>
        <h1>Retrieved data</h1>
    </body>
</html>

例如,如果服务器端看起来像这样,我该如何添加它?
var express = require("express");
var app = express();

app.get("/", function (req, res) {
    res.sendFile(__dirname + "/index.html");
    //how do i add data to the <h1> tag
});

app.listen(10022, function () {
    console.log("server is up");
});
1个回答

6
你无法使用 .html 文件来实现这个功能,你需要一个 EJS 文件。其标记应如下所示。
<html>
    <body>
        <h1>Retrieved <%= data %></h1>
    </body>
</html>

那么您需要使用ejs模块。运行以下NPM命令。

npm install ejs

将您的index.html更改为index.ejs,确保它在名为views的目录中,然后将您的服务器端代码修改为以下内容。

var express = require("express");
var app = express();

app.set("view engine", "ejs");

app.get("/", function (req, res) {
        res.render("index", {data: 'This is the data'});
});

app.listen(10022, function () {
        console.log("server is up");
});

EJS是一种模板语言,将您通过渲染方法传递的数据对象转换为HTML,并在服务器端呈现它,然后将其发送到浏览器。


这可能会起作用。所以谢谢:D 但如果您不介意我问一下,为什么它需要在名为“views”的目录中,为什么不能是不同的? - Felipe Garcia-Diaz
1
没问题!Express默认查找要渲染的视图。我相信有一种方法可以更改它,但我不知道具体是什么。 - whatoncewaslost
模板引擎是将数据与HTML文件一起发送的唯一方式吗? - fsljfke
有点类似。它们是几种方法之一,用于自定义通用HTML表单以包含更特定的用户数据。您可以使用React服务器端渲染来完成相同的操作,虽然我认为那也是模板引擎。否则,您可以在不同的调用中以JSON格式发送数据,并让前端负责显示它。 - whatoncewaslost
有没有不使用ejs的方法?只是将数据发送到JavaScript并让它处理它?例如,上面的评论提到了JSON。 - Crann Moroney

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