首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将Express.js变量传递给Jade/Pug非缓冲代码?

如何将Express.js变量传递给Jade/Pug非缓冲代码?
EN

Stack Overflow用户
提问于 2017-10-08 21:47:28
回答 1查看 935关注 0票数 0

我有一个具有以下代码的index.js:

代码语言:javascript
复制
var express = require('express');
var router = express.Router();

/* GET home page. */
router.get('/', function(req, res, next) {
  res.render('index',{
      "title":"Homepage",
      "navIndex":"reg",
      "navItems":[
         {"title":"Home", "link":"/" },
         {"title":"Register", "link":"/reg"}
      ]
  });
});

module.exports = router;

我有index.pug:

代码语言:javascript
复制
doctype html
html
    head
        title Welcome!
        link(rel='stylesheet' href='css/materialize.min.css')
        link(rel='stylesheet' href='css/style.css')
        script(src='js/jquery-3.2.1.min.js')
        script(src='js/materialize.min.js')
    body
        block content
        nav
            div(class='nav-wrapper')
                a(href='#' class='brand-logo' class='right') Logo
                ul(id='nav-mobile' class='left hide-on-med-and-down')
                -
                    var navItems = #{navItems}

                    for(x = 0; x < navItems.length; x++)
                        li
                            a(href=navItems[x].link) navItems[x].title

由于某些原因,我一直得到“意外块内容”错误。

我试过调整我的间隔,但我似乎无法让它起作用。我看过关于未缓冲代码的文档,但我只是不知道如何将navItems对象从index.js传递到pug文件的未缓冲代码部分。我假设您定义了一个变量,就像我以前做过的ex. var navItems = #{navItems}。关于这个问题有任何具体的文档吗?如果没有,我到底做错了什么?谢谢。

编辑:

更新的index.pug如下所示。但是它逐字输出"navItemsx.title“,而不是变量的值。

代码语言:javascript
复制
doctype html
html
    head
        title Welcome!
        link(rel='stylesheet' href='css/materialize.min.css')
        link(rel='stylesheet' href='css/style.css')
        script(src='js/jquery-3.2.1.min.js')
        script(src='js/materialize.min.js')
    body
        nav
            div(class='nav-wrapper')
                a(href='#' class='brand-logo' class='right') Logo
                ul(id='nav-mobile' class='left hide-on-small-only')
                    - for(x = 0; x < navItems.length; x++)
                    li
                        a(href=navItems[x].link) navItems[x].title
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-09 06:30:57

在您的block文件中有一个index.pug语句,它指示这个文件通常是由其他模板继承的,它将为您的block content提供内容。

我认为从您的block content中删除index.pug语句可以解决您的错误。也可以向block content提供默认内容。

你可以在这里阅读更多关于Pug中的模板继承的内容。

关于您更新的代码,我认为只对属性(即属性内插)不推荐使用#{variableName}语法。

当作为内容的一部分使用时,您可以使用以下任一项:

代码语言:javascript
复制
a(href=navItems[x].link)= navItems[x].title
a(href=navItems[x].link) #{navItems[x].title}

现在,关于for循环在缩进方面的差异,如果您使用的是Pug循环,即在开始时没有破折号(-),则需要适当的缩进。

当您在一行开头添加一个破折号(-)时,这一行将被视为纯javascript,然后在大多数情况下不需要缩进下一行。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46636394

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档