Skip to content

自定义 ​

自定义指令 ​

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/。

基于 MIT 许可发布。