Vue中的视图是基于template来实现的,并且基于vue-template-compiler模块来实现模版解析「把模版语法变为虚拟DOM->vnode」,经过dom-diff处理后,变为真实的DOM
React中是基于jsx来实现视图层的构建,并且基于babel-preset-react-app"模块来生成虚拟DOM对象,最后也是经过DOM-DIFF对比,变为真实的DOM
JSX:javascript and xml「html」
- 嵌入JS表达式「处理完有结果的」。基于{}即可
- 变量
- 一元运算
- 判断:三元运算符
- 对于循环可以使用数组的map方法,但是foreach和自己写的循环不行
- null和undefined在jsx中代表的是空元素
- 如果嵌套的是一个数组,它会把数组中的每一项作为一个元素放在视图中,中间不会有逗号分隔
- 基于map循环绑定的元素,需要设置key存唯一值,只要是当前循环中是唯一的即可
- 事件绑定基于 onXXX={函数}实现,使用细节上和原生JS基本类似「后期会研究里面的this和事件对象」
- <></>在JSX中Fragment标签:保证了只有一个根结点,但是不会加深HTML结构层级
- 给元素设置class,需要基于className设置
- 基于style设置样式,样式值必须是一个对象 style={样式对象}
- 大括号中不允许直接嵌入普通对象,(数组可以,而且可以排除设置style),但是可以嵌入一个JSX元素对象
- template是模版语法,如何使用模版已经规定好了,所以使用起来会略微死板,而jsx表现的还是很灵活的!