【问题标题】:Jade: How to extend base-templates based on value of a variableJade:如何根据变量的值扩展基本模板
【发布时间】:2013-04-23 17:17:46
【问题描述】:

我有两个名为ios.jadeandroid.jade 的“主模板”以及多个“子模板”,它们应该根据变量的值扩展ios.jadeandroid.jade。不幸的是,我还没有找到方法。

我想到了以下类似的东西,但它不起作用:

if (locals.os === "android")
  extends android
else
  extends ios

有什么建议吗?

【问题讨论】:

    标签: express pug multiple-inheritance template-engine extends


    【解决方案1】:

    我刚刚找到了一种方法来动态决定在“主模板”中包含哪个“子模板”。假设我的“主模板”看起来像这样(另存为main.jade):

    html
      head
        meta(charset='utf8')
        base(href='/')
        title My super cool website
    body
      if(locals.os === "android")
        include android
      else
        include ios
    

    我的其他文件是android.jade:

    p android
    

    ...和ios.jade:

    p ios
    

    现在只需在您的 Node.js-Express 服务器上渲染“主模板”,然后看看奇迹发生(请记住,下面的代码并不完整,您需要先设置服务器):

    app.get('/', function(req, res) {
      res.render('main', {locals:{os: 'android'}});
    });
    

    【讨论】:

    • 这允许给定的布局基于变量呈现不同的孩子。这已经可以通过模板继承实现(而且更简单)。
    猜你喜欢
    • 1970-01-01
    • 2013-11-16
    • 1970-01-01
    • 1970-01-01
    • 2020-07-08
    • 1970-01-01
    • 1970-01-01
    • 2010-11-22
    相关资源
    最近更新 更多