如果要在JS里写HTML,就是创造一个一个的DOM对象,用JS来写,会非常的冗余并且不能一目了然的看清楚DOM的结构。所以就扩展成了JSX,直接用HTML的写法在js中写DOM。
JSX就是js的对象采用JSX,就会有一个编译的过程。将HTML写的DOM翻译成js的对象。
JSX到页面经历了什么
为什么会有中间这一层?
-
原因之一:我们拿到一个UI表示的对象之后,不一定会把它就在渲染在普通的页面上,我们可能会把它渲染到一个canvas(react-canvas)上,或者手机app(react-native)上。这也是为什么要把react-dom单独抽离(而不是包括在react中)的原因。
-
原因之二:有了这样一个对象之后,就可以在数据改变需要重新渲染对象的时候,用比较快的算法来操作js对象(避免直接操作页面上的DOM),这样可以减少浏览器重排,极大的优化性能。 (大概react的每次渲染只更新有改变的部分就是和这个设计有关吧)
整理自:React 小书
网友评论