You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JSX为何是合法JavaScript语法?React对JSX的处理逻辑是怎样的?

JSX与React定位相关问题解答

1. JSX语法合法性的原理

你关于「JSX会被预先转换为原生JS代码、逻辑类似C预处理器处理宏」的核心猜测是正确的。
JSX本身不属于ECMAScript定义的原生JS语法,无法直接在JS引擎中运行,所有JSX代码都会在构建阶段被替换为标准JS代码后才会进入运行环境。
不过编译工作不是React本身完成的,而是由Babel、SWC、TypeScript编译器(tsc)这类前端构建链中的转译工具实现,React官方只负责定义JSX的转译规范,以及提供转译后代码需要调用的运行时方法。

举个实际转译例子:
原始JSX代码:

function Card({ title }) {
  return <div className="card">
    <h3>{title}</h3>
  </div>
}

转译后的标准JS代码(React17+版本):

import { jsx as _jsx } from "react/jsx-runtime";
function Card({ title }) {
  return _jsx("div", {
    className: "card",
    children: _jsx("h3", { children: title })
  });
}

2. React的定位是否属于普通JS库

将React定义为JS库是完全准确的。
你觉得它的定位高于普通JS库,主要是因为React是一套完整的视图层解决方案,自带渲染调度、状态管理、生命周期管理等全套能力,还需要配合构建工具链使用,和lodash这类仅提供单一工具能力的小型JS库的使用体验差异很大,但它本质依然符合JS库的定义:

  • 所有能力都运行在标准JS运行时之上,不需要对JS引擎做任何底层修改
  • 转译后的代码本质都是调用React暴露的公共方法,没有React依赖的话转译后的JSX代码也无法正常运行

内容的提问来源于stack exchange,提问作者Redwan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 04:06:01