【问题标题】:html rendering not displaying nunjucks variables when using express router使用快速路由器时,html 渲染不显示 nunjucks 变量
【发布时间】:2018-08-08 18:59:20
【问题描述】:

回答:我发现data 没有传递给 nunjucks 模板。我在 index.njk 中用{{title}}{{sub}} 替换了{{data.title}}{{data.sub}},现在我的模板呈现了对象变量。感谢 antonmyrberg 和 petarr。

我正在尝试将一个对象传递给我的 nunjucks 模板,该对象位于一个模块中的 res.render 中,该模块正在导出到快速路由器。当我访问路由时,index.njk 呈现,但对象属性不显示。

app.js

// -- Create express application --
const express = require('express');
const app = express();

// Require in Express Router
const router = require('./router');

// Require in Nunjucks and configure nujucks to install to Express
const nunjucks = require('nunjucks');
nunjucks.configure('views', {
   express: app
});

// index page
app.use('/', router);

// -- Listen on port 3000 --
app.listen(3000, () => {
  console.log('Listening on Port 3000');
});

路由器/index.js

const express = require('express');
const router = express.Router();

let index = require('../modules/index.js');

router
 .route('/')
 .get(index.landing);

module.exports = router;

我使用传递路径的 app.js 中的 app.get 运行相同的模板,并使用位于 module.exports.landing 中的相同代码,在模板呈现时显示对象中的变量。但我无法让它与这种布局一起使用。

模块/index.js

module.exports.landing = (req, res) => {
   console.log('works');
   let data = {
       title: 'Nunjucks',
       sub: 'Using nunjucks'
   } ;
   res.render('index.njk', data);    
}

views/index.njk

<body>
    <h1>{{data.title}}</h1>
    <p>{{data.sub}}</p>
</body>

【问题讨论】:

    标签: javascript express nunjucks


    【解决方案1】:

    我自己没有使用过 Nunjucks,但我猜测一下,你误解了事情的运作方式。

    let data = {
       title: 'Nunjucks',
       sub: 'Using nunjucks'
    };
    res.render('index.njk', data);
    

    也可以通过返回匿名{}来实现。

    res.render('index.njk', {
       title: 'Nunjucks',
       sub: 'Using nunjucks'
    });
    

    您对data 的引用不会传递给模板,只是一个包含titlesub 的对象。您是否尝试过仅引用 {{title}}{{sub}}

    【讨论】:

      【解决方案2】:

      当你调用视图文件中的局部变量时,你不需要那些数据

      res.render('index.njk', data);
      

      一样
      res.render('index.njk', {title: 'Nunjucks', sub: 'Using nunjucks'});
      

      所以为了回答你,试着在模板中写这个: ```

      <body>
          <h1>{{title}}</h1>
          <p>{{sub}}</p>
      </body>
      

      ```

      【讨论】:

        【解决方案3】:

        我发现data 没有传递给 nunjucks 模板。我在 index.njk 中用{{title}}{{sub}} 替换了{{data.title}}{{data.sub}},现在我的模板呈现了对象变量。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2010-09-13
          • 2020-05-13
          • 2018-09-27
          • 1970-01-01
          • 2021-06-26
          • 1970-01-01
          • 2022-09-28
          • 2019-04-25
          相关资源
          最近更新 更多