响应式编程已经渗透到很多领域中的编码中,比如RxJava,Vue.js等,当然,目的就是提高编程的效率
起因:
以前我们改变UI的时候,就需要通过Dom来操作UI元素,随着业务的增多,这种方式就显得很笨重了
比如document.getElementById('id')
但页面UI元素过多的时候,无论是更改UI的显示,还是从UI元素读取相应的值,会让我们的编码变得异常臃肿
因此,我们就需要一个更好的方案了
方案:
Angular.js和Vue.js。
相对于Vue.js来说,Angular.js稍显复杂和笨重(毕竟vue比angular少四个字母,手动滑稽),下面我们就简单介绍一下Vue.js的基本原理和用法
基本思想:
它的思想就是通过data与view进行双向绑定,就可以实现UI和和数据的快速互动了(data发生变化,UI就会发生变化;UI发生变化,data也会发生变化),显得很简洁方便
基本原理:
data和view相互通信的关键就是,基于JS的异步事件模型,简单地来说,就是有一个循环事件模型一直在跑,如果相应的事件被触发了,就可以通知到data或者view。(和Android中的Handler,Looper,Message的异步机制感觉很相似)
基本用法,如下
<!DOCTYPE html><html><head><meta charset="utf-8"><script src="https://cdn.bootcss.com/vue/2.4.2/vue.min.js"></script></head><body><div id="app"> <p>{{ message }}</p></div> <script>new Vue({ el: '#app', data: { message: 'Hello Vue.js!' } })</script></body></html>
来看看下面的代码,很熟悉吧,就是微信小程序的编码,也是采用类似的方案:
image.png
image.png
总结:
不得不说,这种思想的确先进。
其实,在Android,iOS中,也有这种类似的方案,就是MVVM开发模式,data与UI进行绑定;不过,在Android开发中,鉴于Data一般是bean.java,与一个UI绑定后,扩展性和通用型就会打折扣,这里就不深入讨论了
作者:helang1991
链接:https://www.jianshu.com/p/6603fad71d30