Javascript 获取对jade模板中数据的访问(以生成静态html)

Javascript 获取对jade模板中数据的访问(以生成静态html),javascript,node.js,pug,gruntjs,Javascript,Node.js,Pug,Gruntjs,我试图将一些数据传递给jade模板以生成静态内容。我不太了解node.js和express,我不把它们用作后端。我使用jade作为模板引擎并生成静态html 在翡翠发行清单中有很多关于拥有的要求,并且所有者有意见 我想提倡不要让太多的js进入模板、地图等 可以通过当地人暴露 如果模板中有很多逻辑或对象等,您应该 在使用app.helpers()等时,它们仍然可以是仅查看帮助程序,但至少 至少它可以保持模板更干净 我不太清楚如何在环境中做到这一点。基本上,如果我可以访问jade模板中的javasc

我试图将一些数据传递给jade模板以生成静态内容。我不太了解node.js和express,我不把它们用作后端。我使用jade作为模板引擎并生成静态html

在翡翠发行清单中有很多关于拥有的要求,并且所有者有意见

我想提倡不要让太多的js进入模板、地图等 可以通过当地人暴露

如果模板中有很多逻辑或对象等,您应该 在使用app.helpers()等时,它们仍然可以是仅查看帮助程序,但至少 至少它可以保持模板更干净

我不太清楚如何在环境中做到这一点。基本上,如果我可以访问jade模板中的javascript变量(可能是文本、js或json文件),那么我就可以使用模板中的数据并生成静态html文件。最好的方法是什么


编辑 为了进一步澄清,我可能有如下数据(比如在json文件中)

在我的mixin中,我需要访问jade模板中的user1、user2等

.content
        +colum(user1 )
        +colum(user2 )

mixin colum(d)
    .span4
        h4
            | #{d.lbl}
        p
            | #{d.txt}

非常感谢。

您可以使用以下工具在jade中呈现数据:#{your_variable}

希望这有帮助:jade公共API

更新:在玩了一段时间后,我得到了:

var jade = require('jade');

// Compile a function
var fn = jade.compile('p= data');
console.log(fn({'data':'test'}));
当我运行这段代码时,我得到了:
test

。下面是jade的工作原理:


complie(jadeString)是一个函数,用于确定jade必须编译的字符串-在
jadeString
参数中,您可以使用
fs
模块加载jade模板的内容并将其放置在此处。fn(jsonData)是将jade模板实际编译为html的函数,jsonData是要在模板中使用的数据。

如果要使用grunt contrib jade执行此操作,请尝试
数据
选项:

jade: {
  compile: {
    options: {
      data: function(dest, src) {
        // Return an object of data to pass to templates
        return require('./userData.json');
      },
    },
    files: {
      "dest.html": ["templates/*.jade"]
    },
  },
}

下面是上面的文档:

我添加了一些说明。与其说如何使用变量,不如说是如何在非表达式/节点上下文中传递变量。谢谢,谢谢,瑞基。。我重新阅读了文档,偶然发现了
locals
选项。这个玉插件接受它。你用过吗?再次感谢如果JSON不是一个模块,我发现
返回grunt.file.readJSON('userData.JSON')
require()
会导致错误的地方工作:“错误:找不到模块‘userData.json’”。
jade: {
  compile: {
    options: {
      data: function(dest, src) {
        // Return an object of data to pass to templates
        return require('./userData.json');
      },
    },
    files: {
      "dest.html": ["templates/*.jade"]
    },
  },
}