今日讲讲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 调用的语法糖

相关文章
|
7月前
|
JavaScript 前端开发 API
【面试题】当面试官问 Vue2与Vue3的区别,你该怎么回答?
【面试题】当面试官问 Vue2与Vue3的区别,你该怎么回答?
198 0
|
4月前
|
JavaScript 前端开发
【Vue面试题二十五】、你了解axios的原理吗?有看过它的源码吗?
这篇文章主要讨论了axios的使用、原理以及源码分析。 文章中首先回顾了axios的基本用法,包括发送请求、请求拦截器和响应拦截器的使用,以及如何取消请求。接着,作者实现了一个简易版的axios,包括构造函数、请求方法、拦截器的实现等。最后,文章对axios的源码进行了分析,包括目录结构、核心文件axios.js的内容,以及axios实例化过程中的配置合并、拦截器的使用等。
【Vue面试题二十五】、你了解axios的原理吗?有看过它的源码吗?
|
4月前
|
JavaScript 程序员 开发者
vue组件的使用与基础知识你真的完全明白吗?
【8月更文挑战第16天】vue组件的使用与基础知识你真的完全明白吗?
43 3
vue组件的使用与基础知识你真的完全明白吗?
|
4月前
|
JavaScript 算法 索引
【Vue面试题二十三】、你了解vue的diff算法吗?说说看
这篇文章深入分析了Vue中的diff算法,解释了其在新旧虚拟DOM节点比较中的工作机制,包括同层节点比较、循环向中间收拢的策略,并通过实例演示了diff算法的执行过程,同时提供了源码层面的解析,说明了当数据变化时,如何通过Watcher触发patch函数来更新DOM。
【Vue面试题二十三】、你了解vue的diff算法吗?说说看
|
7月前
|
JavaScript 前端开发 Java
【面试题】Vue2的$nextTick原理解析
【面试题】Vue2的$nextTick原理解析
104 1
|
7月前
|
缓存 JavaScript 前端开发
【面试题】面试官:vue的这些原理你了解吗?
【面试题】面试官:vue的这些原理你了解吗?
|
7月前
|
存储 缓存 JavaScript
【面试题】当面试官让我回答React和Vue框架的区别......
【面试题】当面试官让我回答React和Vue框架的区别......
136 0
|
7月前
|
移动开发 缓存 JavaScript
【Vue 面试题10道】我好像之前想过要写,不过之前JavaScript面试题比较多,就暂时略过了,这些应该几乎把常问的都包括了
【Vue 面试题10道】我好像之前想过要写,不过之前JavaScript面试题比较多,就暂时略过了,这些应该几乎把常问的都包括了
|
缓存 JavaScript 前端开发
一遍关于vue基础语法上篇
一遍关于vue基础语法上篇
74 0
|
JavaScript
一遍关于vue基础语法下篇
一遍关于vue基础语法下篇
52 0

热门文章

最新文章