繁体   English   中英

如何从 Handlebars 模板中获取部分

[英]How to get partials from a Handlebars template

我希望能够从 Handlebars 模板中提取所有引用到其中的部分。

像这样的事情:

var template = Handlebars.compile('<p>Hello {{> mypartial}}</p>');
console.log(template.partials); // <- i want to print ['mypartial']

在找到 awnser 之前,我搜索了一段时间,但它在把手文档中很深: https : //github.com/handlebars-lang/handlebars.js/blob/master/docs/compiler-api.md#ast-游客

如果您创建一个类 ImportScanner 来重载 PartialStatement,就像在文档中一样:

var Visitor = Handlebars.Visitor;

function ImportScanner() {this.partials = [];}
ImportScanner.prototype = new Visitor();

ImportScanner.prototype.PartialStatement = function(partial) {
  this.partials.push(partial.name.original);
  Visitor.prototype.PartialStatement.call(this, partial);
};

然后,您可以使用它从已解析的模板中获取所有部分:

var ast = Handlebars.parse('<p>Hello {{> mypartial}}</p>');
var scanner = new ImportScanner();
scanner.accept(ast);
console.log(scanner.partials); // <= print ['mypartial']

但它只适用于第一级部分。 如果 'mypartial' 包含其他部分,您将找不到它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM