关于Jade模板引擎的快速提问:
node.js
,如何将.jade
个变量传递到express.js
模板?我正在努力建立一个不使用快递的小网站,以便我能理解一切是如何运作的。
此外,是否有关于使用Jade和node.js
没有表达的教程或文章?
答案 0 :(得分:10)
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}
答案 1 :(得分:1)
Vadim答案很好,但很老。它使用不同的语法来声明Jade变量,然后使用当前在Jade official tutorial中使用的变量。此外,它没有显示如何使用Jade options。
<强> index.jade 强>
doctype html
html
head
title= pageTitle
body
h1= greetings
在此示例中,变量为 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>
上一个示例输出的HTML没有漂亮的打印。这不是问题,但Jade有一个选项可以输出漂亮的HTML。您可以看到完整的选项列表here。
当您的模板中还包含变量时,Jade&#39; 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>