Jak*_*ake 6 templates node.js handlebars.js
我正在尝试提取在把手模板编译期间实际使用的部分列表。如果我能在实际编译之前以某种方式获得该信息,那就更理想了。
下面是一个简单的把手示例,它以您期望的方式编译:
var handlebars = require('handlebars');
var template = `
Template: {{>a}}
`;
handlebars.registerPartial('a', `
Partial A: {{A}} {{>b}}
`);
handlebars.registerPartial('b', `
Partial B: {{B}} {{>c}}
`);
handlebars.registerPartial('c', `
Partial C: {{C}}
`);
handlebars.registerPartial('d', `
Partial D: {{D}}
`);
var compiled = handlebars.compile(template);
console.log(compiled({
'A' : 'A is for Apple',
'B' : 'B is for Ball',
'C' : 'C is for Cat',
'D' : 'Not used'
}));
Run Code Online (Sandbox Code Playgroud)
输出为
Template:
Partial A: A is for Apple
Partial B: B is for Ball
Partial C: C is for Cat
Run Code Online (Sandbox Code Playgroud)
我想要一个列表,它返回在编译期间实际使用了部分 A、B 和 C 的事实。
我在这里试图避免的是编写自己的正则表达式来解析模板,然后手动构建该列表。我更愿意坚持使用车把中实际使用的机制,以避免将来可能发生的损坏。
执行编译的模板后,任何已使用的部分都会成为 Handlebars 对象中的函数。未使用的部分将保留字符串。
var handlebars = require('handlebars')
var template = `
Template: {{>a}}
`
handlebars.registerPartial('a', `
Partial A: {{A}} {{>b}}
`)
handlebars.registerPartial('b', `
Partial B: {{B}} {{>c}}
`)
handlebars.registerPartial('c', `
Partial C: {{C}}
`)
handlebars.registerPartial('d', `
Partial D: {{D}}
`)
var compiled = handlebars.compile(template)
compiled({})
var used = []
var unused = []
for (var name in handlebars.partials) {
var partial = handlebars.partials[name]
if (typeof partial === 'function') {
used.push(name)
} else {
unused.push(name)
}
}
console.log('Used partials: ' + used) // a,b,c
console.log('Unused partials: ' + unused) // d
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
329 次 |
| 最近记录: |