什么是JSXIdentifier以及它与AST中的Identifier的区别?

时间:2015-12-12 14:30:00

标签: javascript abstract-syntax-tree jsx

如JSX扩展中所定义

interface JSXIdentifier <: Identifier {
    type: "JSXIdentifier";
}

JSXIdentifier与AST中的正常标识符的目的是什么? https://github.com/facebook/jsx/blob/master/AST.md

1 个答案:

答案 0 :(得分:0)

好的,看起来JSXIdentifier大致对应于JSX虚拟DOM中的组件或标签名称。例如在代码中

<ul></ul> 

JSXOpeningElement个孩子JSXIdentifier,名称设为“ul”

{
  name {
     name : "ul", 
     type: "JSXIdentifier",
     ...
  },
  type: "JSXOpeningElement",
  ...
}

原因是区分JavaScript标识符与Virtual DOM元素或React类名称。

因此,正常Identifier引用JavaScript执行上下文变量,而JSXIdentifier引用Virtual DOM或React Class名称。