自定义
自定义指令
typescript
import { render, Traversal, type Loc } from 'janja';
class CustomNode extends Traversal {
readonly type = 'CUSTOM';
constructor(public readonly loc: Loc) {
super();
}
}
await render('{{ custom }}', {}, {
parsers: {
*custom(token) {
yield 'NEXT';
yield new CustomNode(token.loc);
},
},
compilers: {
CUSTOM: (node, compiler) => {
compiler.pushStr(node.loc, '<CUSTOM/>');
},
},
});
// "<CUSTOM/>"自定义过滤器
typescript
import { Renderer } from 'janja';
const renderer = new Renderer({
filters: {
my_filter(value) {
return `自定义:${value}`;
},
},
});模板中即可使用
janja
{{= foo | my_filter }}如需更多细节,可参考源码 packages/janja/src/filters.ts 和 packages/janja/src/plugins/。