我正在解析JSX (React组件),以找到以下所有节点:
JSXText型text这是我第一次尝试解析组件源文件,并测试如何获得Literal节点。
const acorn = require("acorn")
const jsx = require("acorn-jsx")
const cf = require("acorn-class-fields")
const walk = require("acorn-walk")
let s = acorn.Parser.extend(cf).extend(jsx()).parse(cnt, {ecmaVersion: "latest", sourceType: "module"});
walk.simple(s, {
Literal(node) {
console.log(`Literal: ${node.value}`)
}
})问题
text参数的节点?发布于 2021-10-10 14:59:08
我相信您可以扩展acorn-walk以包括额外的类型。
这个插件适合我:https://github.com/sderosiaux/acorn-jsx-walk
在编写本报告时,我将如何实施这一原则:
const acorn = require("acorn");
const jsx = require("acorn-jsx");
const walk = require("acorn-walk");
const { extend } = require('acorn-jsx-walk')
// setup
const parser = acorn.Parser.extend(jsx());
extend(walk.base);
// parse
const ast = parser.parse(cnt, { ecmaVersion: "latest", sourceType: 'module' });
// analys
walk.simple(ast, {
JSXText(node) {
console.log(node.expression)
}
});https://stackoverflow.com/questions/65342217
复制相似问题