今日讲讲JSX

简介: 今日讲讲JSX

为什么要用 JSX?不用会有什么后果?


JSX 语法糖允许前端开发者使用我们最为熟悉的类 HTML 标签语法来创建虚拟 DOM,在降低学习成本的同时,也提升了研发效率与研发体验。


JSX 背后的功能模块是什么,这个功能模块都做了哪些事情?        


JSX 背后的功能模块是React.createElement,该函数并没有做很多复杂的事情,基本上是在进行格式化数据的操作,执行到最后会 return 一个针对 ReactElement 的调用。


JSX 的本质是什么,它和 JS 之间到底是什么关系?


JSX 的本质其实是React.createElement这个 JavaScript 调用的语法糖


这个描述的意思是使用JSX语法可以扩展JavaScript 的功能:在JavaScript 中可以像写HTML一样来构建UI(原生JS是不具备这种能力的),但编译后最终其实还是纯JS代码。JSX 的定位是 JavaScript 的“扩展”,而非 JavaScript 的“某个版本”,所以浏览器并不会像天然支持 JavaScript 一样地支持 JSX。要使JSX在JavaScript中生效,我们需要借助Babel(Babel 是一个工具链,主要用于将 ECMAScript 2015+ 版本的代码转换为向后兼容的 JavaScript 语法,以便能够运行在当前和旧版本的浏览器或其他环境中。类似的,Babel 也具备将 JSX 语法转换为 JavaScript 代码的能力。)进行编译:JSX 会被编译为 React.createElement(), React.createElement() 将返回一个叫作“React Element”的 JS 对象。


如下一个Babel编译的例子:


可以看到,所有的 JSX 标签都被转化成了 React.createElement 调用,这也就意味着,我们写的 JSX 其实写的就是 React.createElement。


这里我们可以得出结论:JSX 的本质其实是React.createElement这个 JavaScript 调用的语法糖

相关文章
|
4天前
|
XML JavaScript 前端开发
Vue3 项目中怎么使用 jsx——易懂
Vue3 项目中怎么使用 jsx——易懂
8 0
|
4天前
|
存储 JavaScript 前端开发
搞懂Vue一篇文章就够了
搞懂Vue一篇文章就够了
11 0
|
4天前
|
JavaScript 前端开发 数据安全/隐私保护
优秀的前端框架vue,原理剖析与实战技巧总结【干货满满】(二)
优秀的前端框架vue,原理剖析与实战技巧总结【干货满满】(二)
|
6月前
|
JavaScript
一遍关于vue基础语法下篇
一遍关于vue基础语法下篇
38 0
|
6月前
|
缓存 JavaScript 前端开发
一遍关于vue基础语法上篇
一遍关于vue基础语法上篇
51 0
|
10月前
|
JavaScript
vue时间比较(简单易懂)
vue时间比较(简单易懂)
108 0
|
11月前
|
存储 前端开发 JavaScript
新手也可以读懂的 React18 源码分析
打造全网最简单,新手也可以看懂的 React 18 源码分析系列。共同学习 React 设计思想,提升编码能力,轻松应对前端面试
176 0
新手也可以读懂的 React18 源码分析
|
JavaScript 前端开发
最简vue.js原理教程,适合初学者
早就想写这个了,和csdn高校俱乐部约好了有个直播,想着反正要备课,我不如直接把要讲的东西写成博客算了。
|
算法 JavaScript 前端开发
一篇文章带你读懂Vue源码(上)
一篇文章带你读懂Vue源码(上)
129 0
一篇文章带你读懂Vue源码(上)
|
JSON 前端开发 JavaScript
我明白了,react心得
React 就干两件事,打造用户界面,响应各种事件。16.0版本提出fiber,16.8版本提出hooks。 React原来是php项目,后来改了编译器,换成js来编译,然后加入虚拟dom。所以React只做两件事,一件事是渲染ui,一件事是响应事件。mvc和mvvm都是早些年angular的设计理念。react并不是什么mvvm和mvc,它只是一个很小的东西,只做那两件事儿。它只是个工具。backbone才是真正的mvc,它是模仿java的spring,挪到前端来了。
158 0
我明白了,react心得