【问题标题】:Pass variables to Jade without Express将变量传递给 Jade without Express
【发布时间】:2012-09-01 14:05:37
【问题描述】:

关于 Jade 模板引擎的快速问题:

  • 不使用express.js 时,如何将node.js 变量传递给.jade 模板?

我正在尝试做一个不使用快递的小网站,只是为了让我了解一切是如何运作的。

另外,有没有关于Jade和node.js不用快递的使用教程或文章?

【问题讨论】:

    标签: node.js express pug


    【解决方案1】:
    var jade = require('jade');
    jade.renderFile('tpl.jade', { hello: 'world' }, function(err, html) {
            console.log(err);
            console.log(html);
    });
    

    tpl.jade:

    html
      body
        h1 #{hello}
    

    【讨论】:

    • 所以,据我了解,变量 hello 将被字符串 'world' 替换。这个例子看起来如何?感谢您的快速回答!
    • 感谢先生的回答!我在文档中找不到这个
    【解决方案2】:

    Vadim 的回答很好,但是老了。它使用与 Jade official tutorial 当前使用的语法不同的语法来声明 Jade 变量。此外,它没有显示如何使用Jade options

    简单示例

    index.jade

    doctype html
    html
      head
        title= pageTitle
      body
        h1= greetings
    

    在本例中,变量是 pageTitlegreetings

    app.js

    var jade = require('jade');
    
    var locals = {
      pageTitle : 'My Page',
      greetings : 'Hello World!'
    };
    
    jade.renderFile('index.jade', locals, function(err, html) {
      console.log(html);
    });
    

    输出:

    <!DOCTYPE html><html><head><title>My Page</title></head><body><h1>Hello World!</h1></body></html>
    


    使用翡翠选项

    前面的示例输出的 HTML 没有漂亮的打印。这不是问题,但 Jade 有一个选项可以输出漂亮的打印 HTML。你可以看到完整的选项列表here

    Jade 的official tutorial 没有教您在模板中还有变量时如何使用选项。 Jade 的GitHub page 试图教书,但不完整。它使用:

    jade.renderFile('filename.jade', merge(options, locals));
    

    由于merge 是一个未定义的函数,你必须定义它。此函数将合并两个 JSON 对象。

    app.js

    var jade = require('jade');
    
    function merge(obj1, obj2) {
      var result = {};
    
      for(var key in obj1) 
        result[key] = obj1[key];
    
      for(var key in obj2) 
        result[key] = obj2[key];
    
      return result;
    }
    
    var options = {
      pretty : true
    };
    
    var locals = {
      pageTitle : 'My Page',
      greetings : 'Hello World!'
    };
    
    jade.renderFile('index.jade', merge(options, locals), function(err, html) {    
      console.log(html);
    });
    

    输出:

    <!DOCTYPE html>
    <html>
      <head>
        <title>My Page</title>
      </head>
      <body>
        <h1>Hello World!</h1>
      </body>
    </html>
    

    【讨论】:

    • 仅供参考,不要创建合并函数,而是使用 Object.assign
    猜你喜欢
    • 2011-08-29
    • 2016-10-28
    • 2020-04-16
    • 2016-10-18
    • 2016-10-20
    • 2013-04-06
    • 2023-03-09
    • 1970-01-01
    相关资源
    最近更新 更多