Swig模板引擎
2016-03-23 21:21:26 1 举报
AI智能生成
Swig模板引擎是一个基于C/C++的模板系统,它允许开发者使用类似于HTML的模板语法来生成C/C++代码。Swig的主要目标是提高代码重用性、可读性和可维护性。通过将逻辑和数据分离,Swig使得开发人员可以专注于业务逻辑的开发,而不需要关心底层的实现细节。此外,Swig还支持多种编程范式,如面向对象、过程式等,以满足不同项目的需求。总之,Swig模板引擎为C/C++开发者提供了一个灵活、高效且易于使用的模板解决方案,有助于提高软件开发的效率和质量。
作者其他创作
大纲/内容
Swig API
TAGS
autoescape:true/false/"js"/"html"
block:块名,用于模板继承中,覆盖父模块中同名的块
else:没有值
elif:类似else,可以接一个逻辑判断值
extends:父模块的相对地址,用于模块继承,例如{% extends "./layout.html" %}
filter:过滤器名称
for:
if:
import:导入宏,使用macro定义宏
include:导入文件路径
macro:定义可复用的宏,可以使用import导入另一个模板
parent:直接插入父模块中同名块的内容,使用在模板继承中
raw:不做任何处理直接插入,使用插入css、js
set:设置变量值
spaceless:移除HTML标签之间的空白
开始使用
安装:npm install swig
基础用法:
var swig = require('swig');
// Compile a file and store it, rendering it later
var tpl = swig.compileFile('/path/to/template.html');
console.log(tpl({ article: { title: 'Swig is fun!' }}));
// Immediately render a Swig template from a string
console.log(swig.render('{% if foo %}Hooray!{% endif %}', { locals: { foo: true }}));
变量:
1、包括在{{}}中间,所有变量会自动HTML转义,函数输出例外
2、访问对象熟悉可以用点号或者中括号,如{{foo.bar}}等价于{{foo['bar']}},但是如果属性名中有非数字及字母的字符
则必须用中括号,如{{foo['bar-a']}}
3、如果变量没有定义,则输出空字符,如果变量为false、null、0,则直接输出
4、变量输出可以使用过滤器,比如
{{ name|title }} was born on {{ birthday|date('F jS, Y') }}
// => Jane was born on July 6th, 1985
5、变量也可以是函数,比如
var locals = { mystuff: function mystuff() { return '
Things!
'; } }; swig.render('{{ mystuff() }}', { locals: locals }); // =>Things!
无论如何配置Swig,函数的输出不会做HTML编码,如果要做编码可以使用过滤器,比如 {{ mystuff()|escape }} // => <p>Things</p> 6、逻辑TAGS {% if foo %}bar{% endif %} // Create a list of people, only if there are items in the people array {% for person in people %} {% if loop.first %}- {% endif %}
- {{ person.name }} {% if loop.last %}
模板加载器
内置加载器
swig.loaders.fs
swig.loaders.memory
自定义加载器
实现resolve和load方法
0 条评论
下一页