写作时的自定义标签 -> 最终的网页上的html标签
标签分两种,无内容的单一标签(Void elements)和有内容的成对标签。
单一标签的基本形式为
成对标签的基本形式为
{% tag arg1 arg2 ... %} content {% endtag %}在实现上分为两种,一种会直接转换,
1 | function xxxTag(args,content) { |
另一种会利用到context进行一定处理
1 | module.exports = function(ctx) { |
Tag采用注册机制
针对不同的解析器,根据需要传入context
可以对同一Tag解析器注册多次,可以将多个名称映射到同一解析器,实现多个名字兼容
1 | module.exports = function(ctx) { |
Tag的建模类位于extend/tag.js
Tag实现是基于nunjucks
模板引擎
1 | function Tag() { |
那么所谓的注册就是对引擎进行标签自定义扩展,这就是为什么采用了{% %}的标签风格
还可以看出有无内容的标签分别对应了NunjucksBlock和NunjucksTag两个实现
1 | Tag.prototype.register = function(name, fn, options) { |
一分也是爱~
版权声明
This site by Linest is licensed under a Creative Commons BY-NC-ND 4.0 International License.
由Linest创作并维护的博客采用创作共用保留署名-非商业-禁止演绎4.0国际许可证。