簡體   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