NodeJS中的默认引擎是jade有点过于复杂,而且不是以HTML为基础的,学习成本和前端适应成本都很大。而ejs虽然简单,但不支持模板导入,而且效率一般。
swig的语法简单,学习成本很低,符合常规逻辑,实验了一下,非常满意;
swig的官网:swig
在Express中使用swig
在nodejs随便建立一个express项目,直接使用命令
mddir 文件夹名称
cd 文件夹名称
express
就可以建立一个一jade为模板的项目。
在package中更改引用
把jade去掉,改为:
"swig": "~1.4.2"
修改app.js
var app = express();
app.set('view engine', 'jade');
//把上面的代码改为下面的
var app = express(),
swig = require('swig'),
people;
app.set('view engine', 'html');
然后增加一行代码:
app.engine('html', swig.renderFile);
app.listen(3000);
然后把原来的views文件夹下得文件后缀都改为html
模板文件layout.html
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>{% block title %}{% endblock %}</title>
{% block head %}
{% endblock %}
</head>
<body>
{% block content %}{% endblock %}
</body>
</html>
index.html
{% extends 'layout.html' %}
{% block title %}index {{title}} {%endblock%}
{% block head %}
{{title}}
{% endblock %}
{% block content %}
<p>This is just an awesome page.</p>
{% endblock %}
这两个文件可以初步了解swig的语法 - block相当于编辑区 - 导入模板使用:extends - 输出变量使用 {{ 变量名 }}
更详细的语法参考swig的官网。
然后再路由中设置即可使用:
router.get('/', function(req, res) {
res.render('index', { title: '标题' });
});