Ska*_*Ska 3 javascript traversal abstract-syntax-tree babeljs
在下面的代码中,是否可以获得 AST 节点的整个字符串表示形式,在这种情况下会返回window.alert('asdf')?
const ast = parse("window.alert('asdf')")
let preloadCode = ""
traverse(ast, {
CallExpression: function(path) {
// path.node.toString() ??
},
})
Run Code Online (Sandbox Code Playgroud)
返回的每个 AST 节点@babel/parser都有一个start和end属性,指向它在源代码中的位置。您可以使用它们来对原始字符串的源进行切片。
const { parse } = require(\'@babel/parser\');\n\nconst source = \'1 + 2 + 3\';\nconst ast = parse(source);\nconst node = ast.program.body[0].expression.left;\n\nconsole.log(source.slice(node.start, node.end)); // \xe2\x86\x92 \'1 + 2\'\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
3556 次 |
| 最近记录: |