部分未在动态网页上呈现

时间:2018-05-25 03:42:16

标签: javascript node.js handlebars.js templating express-handlebars

我为index.html文件创建了一个把手,因此当用户访问http://localhost:3000/ [root]时,它会显示我的index.html的动态版本。但是,当页面加载时,除了我包含的部分内容之外,所有内容都会加载吗?

这是我放置部分内容(newView.handlebar)的页面把手的一部分:

.
.
<main class="twit-container">

    {{#each twitData}}    //will iterate/insert data for the amount of objects in the array being passed in server.js
        {{> newTwit}}  //the name of my partial template
    {{/each}}

</main>
.
.etc...

以下是我的server.js代码(我认为问题可能在哪里):

var path = require('path');
var express = require('express');
var exphbs = require('express-handlebars');
var fs = require('fs');
var app = express();

app.engine('handlebars', exphbs());
app.set('view engine', 'handlebars');

var port = process.env.PORT || 3000;

var rawData = fs.readFileSync('./twitData.json');
var twitData = JSON.parse(rawData); //get the tweet data (text/authors)


app.get('/', function (req, res) {

  res.status(200).render('newView', {data: twitData});

});

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

app.get('*', function (req, res) {
  res.status(404).sendFile(path.join(__dirname, 'public', '404.html'));
});

app.listen(port, function () {
  console.log("== Server is listening on port", port);
});

1 个答案:

答案 0 :(得分:1)

您正在重复twitData,但您永远不会将其发送到视图。

<main class="twit-container">

    {{#each twitData}}    //will iterate/insert data for the amount of objects in the array being passed in server.js
        {{> newTwit}}  //the name of my partial template
    {{/each}}

</main>

您需要像这样发送:

res.status(200).render('newView', { twitData });

否则您需要使用:{{#each data}}