JavaScript 库(只关注于视图)Facebook 开源React Native 编写原生应用Diffing 算法DOM, 不总是直接操作页面真实 DOMDOM 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 转换为真实的 DOMReact 的虚拟 DOM 相关数据, React 会转换为真实 DOM 变化而更新界面
JavaScript XMLReact 定义的一种类似于 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 都以模块来编写的, 这个应用就是一个模块化的应用
当应用是以多组件的方式实现, 这个应用就是一个组件化的应用
