首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Acorn / JSX -具有特定类型的步行节点

Acorn / JSX -具有特定类型的步行节点
EN

Stack Overflow用户
提问于 2020-12-17 14:01:44
回答 1查看 261关注 0票数 1

我正在解析JSX (React组件),以找到以下所有节点:

  • 属于JSXText
  • 节点没有空参数text

这是我第一次尝试解析组件源文件,并测试如何获得Literal节点。

代码语言:javascript
复制
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}`)
                    }
})

问题

  • 我找到了节点类型这里,但没有JSX节点类型-哪里可以找到?
  • 如何过滤不带空text参数的节点?
EN

回答 1

Stack Overflow用户

发布于 2021-10-10 14:59:08

我相信您可以扩展acorn-walk以包括额外的类型。

这个插件适合我:https://github.com/sderosiaux/acorn-jsx-walk

在编写本报告时,我将如何实施这一原则:

代码语言:javascript
复制
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)
    }
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65342217

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档