React 的其他概念
更新日期:
接上篇 React 简介和原理,本节介绍下 React 的其他概念。
其他概念
单向的数据流动 Flux
React 提倡单向数据流动,永远只有从数据到视图的数据流动。Flux 框架,专门管理数据流。
Dispatcher:全局的分发器,负责接收 Action
Action:可以来自于用户的界面操作(eg点击提交按钮)也可以来自服务器端的数据更新
Store:可以在 Dispatcher 上监听到 Action,并作出相应的操作。
当数据模型发生变化时,就触发刷新整个界面。类似“全局的消息发布订阅模型”。
只读数据 Immutability
React 提倡用只读数据来建立数据模型,即所有数据都是只读的,如果要修改它,那么你只能生产一份包含新的修改的数据。此时,是把修改过的对象应用到界面组件上来进行界面的更新。结合 React,只读数据能让 React 组件仅仅通过比较对象引用是否相当来决定自身是否要重新 Render,这在复杂的界面上可以提高性能。
只读数据,并不是 Facebook 的全新发明,它起源于 Clojure、Scala、Hashell 等函数式编程语言。只读的数据让代码更安全和易于维护,不用担心数据在某个角落被某段神奇的代码修改了。
直观的编程方式 JSX
JSX 不是什么新技术,它就是为了方便 FE 在 JS 里声明组件。它呢,算是一个“模板语言”,只是它牵扯到语法都是FE最最常用的(HTML、CSS、JS),所以学习成本小到忽略不计。
关于 JSX 更详细的介绍,可以参考 系列三:理解JSX和组件
React 思想的延伸
React Native 将 React 的思想延伸到原生的移动开发,React 对 UI 层进行了完美的抽象。写 web 页面时,甚至能够做到完全的去 DOM 化,开发者无需进行任何 DOM 操作,直接更新数据写 js 即可。因此,这也让对UI层进行整体替换成了可能,React Native 正式将基于浏览器DOM的UI层换成了Android和IOS的原生控件。React Native 参考了 React 强大的特性(组件化的思想 调式工具 动态代码加载),可对以后的移动开发布局产生重要影响。
Flipboard 则是将 UI 层换成了 Canvas。React Canvas 是一套前端框架,所有的界面元素都通过 Canvas 来绘制。
碎碎念
??JS对于字符串的操作 也是这样的,只读数据
??只读数据,那就是值set的时候 需要验证咯~
??只读数据的应用场景 更适合
?? 这几点,很赞同
1.两层数据模式:数据层、UI层
2.不要’模板’
3.一个不要 UI DOM 操作的未来
??两层模型。话说,我觉得这种形式挺好的。bootstrap我几乎没用过,因为它要兼容很多种情况,导致html的结构复杂的混乱-css也是。而当要修改它的时候,就要看它源码—好多不明所以的写法(要不是自己想想可能是为了兼容某种情况,真心觉得它对自己的需求来说输出的是冗余的)而这种思想吧,就是把 组件-模块化了,更在乎它的功能—觉得这点真心很好
??完全去DOM化,哇咔咔,这么多美好的未来呀!!!很开心过几年可以很自豪的拍着胸脯说:想当年我们操作原生dom的时候呀~从此成为经历过web开发历史的人…【我觉得可以实现的哦】
??传说13年提出来,结果15年初的时候突然又火了,更是因为它的衍生吧,eg.延伸到了原生的移动开发—maybe~
??所有界面元素用Canvas绘制:图搜的分享的那次,发现问题并换种方式去解决的思路和精神都是值得大家去学习的