JavaScript
库(只关注于视图)Facebook
开源React Native
编写原生应用Diffing
算法DOM
, 不总是直接操作页面真实 DOM
DOM Diffing
算法, 最小化页面重绘react.js
: React
核心库react-dom.js
: 提供操作 DOM
的 React
扩展库babel.min.js
: 解析 JSX
语法代码转为 JS
代码的库JS
方式(一般不用)JSX
方式React
提供了一些 API
来创建一种 “特别” 的一般 JS
对象,下面创建的就是一个简单的虚拟 DOM
对象const VDOM = React.createElement('xx',{id:'xx'},'xx');
DOM
对象最终都会被 React
转换为真实的 DOM
React
的虚拟 DOM
相关数据, React
会转换为真实 DOM
变化而更新界面JavaScript XML
React
定义的一种类似于 XML
的 JS
扩展语法: JS + XML
本质是 React.createElement(component, props, ...children)
方法的语法糖DOM
var ele = <h1>Hello JSX!</h1>
HTML/XML
标签JS
对象HTML
标签或其它标签HTML
标签属性或其它<
开头的代码, 以标签的语法解析: HTML
同名标签转换为 HTML
同名元素, 其它标签需要特别解析{
开头的代码,以 JS
语法解析: 标签中的 JS
表达式必须用 { }
包含babel.js
的作用
JSX
代码, 需要 babel
转译为纯 JS
的代码才能运行JSX
, 都要加上 type="text/babel"
, 声明需要 babel
来处理ReactDOM.render(virtualDOM, containerDOM)
DOM
元素渲染到页面中的真实容器 DOM
中显示JS
或 JSX
创建的虚拟 DOM
对象DOM
元素的真实 DOM
元素对象(一般是一个 div
)JS
程序, 一般就是一个 JS
文件JS
, 简化 JS
的编写, 提高 JS
运行效率html/css/js/image
等等)当应用的 JS
都以模块来编写的, 这个应用就是一个模块化的应用
当应用是以多组件的方式实现, 这个应用就是一个组件化的应用