当前位置: 首页 > news >正文

JSX是什么,React为什么使用JSX,babel怎么转译JSX的

JSX是什么,React为什么使用JSX,babel怎么转译JSX的

在前端的框架中有两种“描述UI”的方案,一种是JSX语法,一种是模板语言。

其中React就是选择的JSX,Vue就是选择的模板语言。

JSX其实就是一个语法糖,在编写React代码的时候你可以不使用JSX来进行编写。在React中,你写的JSX代码最终都会被babel编译。

// JSX语法
const element = <h1>Hello,World!</h1>
// babel编译后
var element = React.createElement("h1",null,"Hello,world!");//React17版本之前
// React17版本之后
var _jsxRuntime = require("react/jsx-runtime");
var element = _jsxRuntime.jsx("h1",{children:"Hello World!"});

JSX由babel转换成React.createElement或_jsxRuntime.jsx的形式,函数执行后返回虚拟DOM,所以说你可以不使用JSX,可以直接写React.createElement或_jsxRuntime.jsx的形式。
所以我们写的代码最终都会被构建成虚拟DOM树。JSX就是一种类XML语法的语法糖,让开发者来构建这个虚拟DOM树更加的方便,使代码更加的简洁。

那么babel是怎么样将JSX语法转换成React.createElement或_jsxRuntime.jsx的形式的呢?

babel编译JSX的流程分为三个部分:

  1. parse:通过parse将JSX代码转换成AST。
  2. transform:在transform阶段使用@babel/plugin-transform-react-jsx插件,它的核心就是visitor函数,通过这个函数来遍历AST,根据不同的节点类型来做不同的处理,生成了JSX对应的createElement对应的AST。
  3. generate:最后由generate将AST转换为JS。
http://www.lryc.cn/news/22882.html

相关文章:

  • 从工地转行软件测试,拿下13k+年终奖是种什么体验?
  • 前端面试题 —— 计算机网络(二)
  • 山东大学机器学习期末2022
  • FEBC2022|打造VR内容生态闭环 佳创视讯持续加码轻量化内容建设
  • Redis常见的数据类型命令
  • Python3+Selenium3自动化测试-(准备)
  • VUE的安装和创建
  • ETL工具(kettle) 与 ETL产品(BeeloadBeeDI) 差之毫厘,谬以千里
  • 轻松入门H3C无线AC上线AP【入门篇】
  • 尚医通(二十五)就医提醒和预约统计
  • 网页js版音频数字信号处理:H5录音+特定频率信号的特征分析和识别提取
  • uniapp结合腾讯云及时通信IM的聊天记录本地存储方案
  • PyQGIS开发 -- 基础学习笔记
  • 一篇了解模块打包工具之 ——webpack(1)
  • k8s学习之路 | Day16 k8s 中的容器初探
  • export、import、commit、save、load的区别
  • 多部委联合举办中国人工智能大赛启动会在厦召开,快商通亮相发言
  • js红宝书学习笔记(1-6章)
  • 第十四届蓝桥杯第三期官方模拟赛C\C++题解
  • API接口安全
  • 2023前端一面vue面试题合集
  • 【Leetcode 剑指Offer】第 5 天 查找算法(中等)
  • 薯条投放适合哪些笔记?小红书薯条投放的3种模式
  • 记录第一个Python练习的过程
  • 【Python】3.3实现多线程
  • 在linux中使用lftp和sftp下载文件(夹)
  • Docker简介与用法
  • 基于海鸥算法改进的DELM分类-附代码
  • linux基本功系列之mount命令实战
  • 力扣Top100题之两数相加(Java解法)