svelte.walk
walk(ast: Node, {enter(node: Node, parent: Node, prop: string, index: number)?: void,leave(node: Node, parent: Node, prop: string, index: number)?: void})
walk 函数提供了一种方法,可以通过编译器自己内置的 estree-walker 实例来遍历解析器生成的抽象语法树的方法。
const svelte = require('svelte/compiler');svelte.walk(ast, {enter(node, parent, prop, index) {do_something(node);if (should_skip_children(node)) {this.skip();}},leave(node, parent, prop, index) {do_something_else(node);}});
遍历器需要传入一个抽象语法树以及一个对象(包含可选的两个方法:enter 和 leave)。对于每个节点,enter 会被调用(如果传入的对象中存在这个方法的话)。
接下来,该节点的每个子节点都会被遍历(除非在 enter 方法中调用 this.skip() 方法)。
遍历完成后,leave 方法会在这个节点上被调用。
