響應式編程已經(jīng)滲透到很多領域中的編碼中另绩,比如RxJava,Vue.js等,當然,目的就是提高編程的效率
起因:
以前我們改變UI的時候毁枯,就需要通過Dom來操作UI元素炕柔,隨著業(yè)務的增多船逮,這種方式就顯得很笨重了
比如document.getElementById('id')
但頁面UI元素過多的時候丹禀,無論是更改UI的顯示,還是從UI元素讀取相應的值危融,會讓我們的編碼變得異常臃腫
因此畏铆,我們就需要一個更好的方案了
方案:
Angular.js和Vue.js。
相對于Vue.js來說吉殃,Angular.js稍顯復雜和笨重(畢竟vue比angular少四個字母辞居,手動滑稽),下面我們就簡單介紹一下Vue.js的基本原理和用法
基本思想:
它的思想就是通過data與view進行雙向綁定蛋勺,就可以實現(xiàn)UI和和數(shù)據(jù)的快速互動了(data發(fā)生變化瓦灶,UI就會發(fā)生變化;UI發(fā)生變化抱完,data也會發(fā)生變化)贼陶,顯得很簡潔方便
基本原理:
data和view相互通信的關鍵就是,基于JS的異步事件模型巧娱,簡單地來說碉怔,就是有一個循環(huán)事件模型一直在跑,如果相應的事件被觸發(fā)了禁添,就可以通知到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>
來看看下面的代碼老翘,很熟悉吧芹啥,就是微信小程序的編碼锻离,也是采用類似的方案:
總結(jié):
不得不說,這種思想的確先進叁征。
其實纳账,在Android逛薇,iOS中捺疼,也有這種類似的方案,就是MVVM開發(fā)模式永罚,data與UI進行綁定啤呼;不過,在Android開發(fā)中呢袱,鑒于Data一般是bean.java官扣,與一個UI綁定后,擴展性和通用型就會打折扣羞福,這里就不深入討論了