【问题标题】:Express.js res.render's second parameter and passing data to viewsExpress.js res.render 的第二个参数和传递数据给视图
【发布时间】:2022-01-30 04:18:16
【问题描述】:

我正在浏览有关 node.js 的各种教程并表达,但找不到代码的这个特定部分实际上在做什么。下面是res.render的第二个参数。我不确定的部分是mascots: mascots 部分。这是在声明 mascots 变量吗?我在javascript语言中找不到像这样完成的任何地方,所以我很困惑他们从哪里得到这个。当然,我刚刚开始学习 Javascript,所以它可能在某个显而易见但还没有找到的地方。看起来它是一个对象(大括号 {} 的 b/c),但即使是,命名吉祥物的价值我也不清楚。这是他们所指的objectsarray 吗?如果是这样,我仍然很困惑。经过一番搜索,我可以得到答案,所以在这里问。

app.get('/', function(req, res) {
    var mascots = [
        {name: 'Sammy', organization: 'DigitalOcean', birth_year: 2012},
        {name: 'Tux', organization: 'Linux', birth_year: 1996},
        {name: 'Moby Dick', organization: 'Docker', birth_year: 2013},
    ];
    var tagline = "No programming concept is complete without a cute animal mascot";
    
    res.render('pages/index', {
        mascots: mascots, // this line and the one below is what I am not understanding
        tagline: tagline
    });
});

此特定教程位于此处以供参考:https://www.digitalocean.com/community/tutorials/how-to-use-ejs-to-template-your-node-application 很好的介绍,我了解除了这两行之外的所有内容。

【问题讨论】:

    标签: javascript node.js express


    【解决方案1】:
        res.render('pages/index', {
            mascots: mascots,
            tagline: tagline
        });
    

    这部分将mascots 数组和tagline 字符串传递到您的视图pages/index,然后您可以从您的视图中访问它们。 我认为让你感到困惑的是命名。它不一定必须是相同的名称。 例如,如果我将其命名为

        res.render('pages/index', {
            myMascotsArray: mascots,
            myTagline: tagline
        });
    

    您可以从视图中访问您定义为myMascotsArraymascots 数组。
    参考您提到的链接,他们使用 EJS 作为模板引擎,您可以在其中编写 <% %> 标签之间的 javascript。
    这里可以注意到mascots数组在视图中是以myMascotsArray的形式访问的。

        <ul>
          <% myMascotsArray.forEach(function(mascot) { %>
            <li>
              <strong><%= mascot.name %></strong>
              representing <%= mascot.organization %>,
              born <%= mascot.birth_year %>
            </li>
          <% }); %>
        </ul>
    

    【讨论】:

    • 是的!命名是我困惑的主要部分,因此几乎可以清除那里的所有内容。谢谢! myMascotsArray 到底是什么?这是 Express 特定类型的事情吗,因为我还没有看到在 Javascript 中完成此操作。我一直在考虑声明一种变量。类型数组。这就像声明一个名为myMascotsArray 的吉祥物(数组)类型的变量吗?无论如何,这消除了我的困惑,我可以完成剩下的工作并更好地理解事情。
    • 是的,这是一个明确的特定事物。文档关于 res.render 的第二个参数的说法是“一个对象,其属性定义视图的局部变量。”
    • 非常感谢您的帮助耐心:)。这清除了一切。
    猜你喜欢
    • 2021-05-09
    • 1970-01-01
    • 2021-08-27
    • 1970-01-01
    • 2010-11-07
    • 2011-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多