如何使用Express Node.js将内容打印到HTML

5

如何在服务器端的node.js中将变量中保存的文本显示在html中。

换言之,为了更加清晰明了,我从访问Twitter(Twitt)的API中获取了输出,现在我正在尝试将该文本显示在页面底部。

以下是网页的调用方式:

app.get('/', function (req, res) {
    res.sendfile('./Homepage.html');
});

这是调用Node.js文件的位置:
var express = require('express');
var app = express();

这就是变量的位置:

T.get('search/tweets', { q: hash1 + ' since:2013-11-11', count: 5 },
    function(err, reply) {
        response = (reply),
        console.log(response)
        app.append(response)
    })

1
我不太明白你对“T”的调用位置。你需要在express路由内部调用它,才能将其输出与响应一起发送。 - Nick Tomlin
2个回答

3
假设要在页面上注入的代码会在每个请求中更改,您应该将代码编写如下:
app.get('/', function (req, res){

  // make the call to twitter before sending the response
  var options = { q: hash1 + ' since:2013-11-11', count: 5 };
  T.get('search/tweets', options, function(err, reply) {
    // use RENDER instead of SENDFILE
    res.render('./Homepage.html', {data: reply});
  });

});

请注意 (1) 我在请求中调用 Twitter,(2) 我使用的是 res.render() (http://expressjs.com/api.html#res.render),而不是 res.sendFile()。
这样,您的视图(homepage.html)就可以注入传递给 res.render() 的数据。根据您使用的模板引擎,语法可能有所不同,但如果您使用 EJS,则以下内容应该有效:
<p>your html goes here</p>
<p>The data from Twitter was <h2><%= data %></h2></p>
<p>xxx</p>

0

你需要使用类似ejs模板的东西。

例如,在app.js中,你会有:

app.get('/', function(req, res) {
  res.render('index', {base: req.protocol + "://" + req.headers.host});
});

然后在 index.ejs 文件中,你会有以下内容

<!DOCTYPE html>
<html lang="en">
<head>
  <title>Websitename</title>
  <base href="<%- base %>">
</head>

确保在 app.js 的顶部附近设置您的视图引擎。
app.set('view engine', 'ejs');

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