将variables传递给Jade而不使用Express
关于Jade模板引擎的快速问题:
- 在不使用
express.js
时,如何将node.js
variables传递给.jade
模板?
我正在尝试制作一个不使用快递的小型网站,以便我能够理解一切如何运作。
另外,是否有教程或文章关于使用Jade和node.js
没有expression?
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}
瓦迪姆的回答很好,但很老。 它使用不同的语法来声明Jadevariables,然后在Jade 官方教程中使用 。 此外,它不显示如何使用Jade选项 。
简单的例子
index.jade
doctype html html head title= pageTitle body h1= greetings
在这个例子中,variables是pageTitle和问候 。
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>
使用Jade选项
前面的例子输出的HTML没有漂亮的打印。 这不是一个问题,但玉有一个选项,输出相当印刷的HTML。 你可以在这里看到完整的选项列表。
翡翠的官方教程并没有教你如何在模板中使用选项。 翡翠的GitHub页面试图教,但不完整。 它用:
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>
- 静态的JavaScript不在玉石(与express / node.js)
- 在没有jsonparsing的情况下输出一个服务器生成的json对象
- 来自Jade的sendFile('/ index.html')和render('index')之间的差异
- 浏览器不会重新加载吞吐和livereload
- 如何在jade模板中使用jquery或angularjs创buildpopup窗口
- 通过AJAX呈现Jade模板并尝试传递/访问与HTML分开的数据
- 如何dynamic插入标签在使用JavaScript的玉文件输出?
- $(…).getContext(“2d”)在使用chart.js时不是函数
- JADE和ng-class