在jade模板中获取数据的访问(使静态html)

我正尝试将一些数据传递给玉模板来生成静态内容。 我对node.js不太了解,并且表示,我不把它们用作后端。 我使用玉作为模板引擎,并生成静态HTML。

在玉器问题列表中有很多关于有多行代码的请求,并且所有者评论

我想促进从模板中保留太多的js,地图等可以通过当地人暴露

如果模板中有很多逻辑或对象等,你应该使用app.helpers()等等,它们仍然可以是只能查看的助手,但至less可以保持模板清洁

我不太确定如何在一个基于grunt的环境中做到这一点。 基本上,如果我可以在我的模板中访问javascriptvariables(可能是文本,js或json文件),那么我可以使用我的模板中的数据并生成静态html文件。 做这个的最好方式是什么?


编辑

为了进一步澄清,我可能有像(在一个JSON文件中)

user1 = {link: '', lbl: 'User', txt: '.... lot 0f text ....'} user2 = {link: '', lbl: 'User', txt: '.... lot 0f text ....'} 

在我的混合,不知何故,我需要在我的玉模板访问user1,user2等

 .content +colum(user1 ) +colum(user2 ) mixin colum(d) .span4 h4 | #{d.lbl} p | #{d.txt} 

万分感谢。

如果你想用grunt-contrib-jade做到这一点,试试data选项:

 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"] }, }, } 

这里是关于它的文档: https : //github.com/gruntjs/grunt-contrib-jade#data

您可以使用以下方式呈现您的数据:#{your_variable}

希望这有助于:玉公开API https://github.com/visionmedia/jade#readme

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

 var jade = require('jade'); // Compile a function var fn = jade.compile('p= data'); console.log(fn({'data':'test'})); 

当我运行这个代码时,我得到了: <p>test</p> 。 所以这里是玉如何工作:

jade.complie(jadeString)是一个函数,用于确定jade必须jadeString哪个string – jadeString参数,您可以使用fs模块加载您的jade模板的内容并将其放置在此处。 fn(jsonData)是实际将jade模板编译成html的函数,jsonData是你想在模板中使用的数据。