国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

探秘vue-rx 2.0(推薦)

2024-05-06 15:29:36
字體:
供稿:網(wǎng)友

前一段時間,我寫了兩篇文章,一篇是對目前前端主流視圖框架的思考,一篇是深入使用RxJS控制復(fù)雜業(yè)務(wù)邏輯的,在這兩篇中,我分別提到:

期望在復(fù)雜業(yè)務(wù)邏輯方面使用RxJS,更好地進行抽象,但是視圖上使用輕量MVVM以達到快速開發(fā)的目的。 目前VueJS中,如果要結(jié)合RxJS,可能需要手動訂閱和取消訂閱,寫起來還是沒有CycleJS方便。

最近,VueJS社區(qū)升級了vue-rx這個庫,實現(xiàn)了比較方便地把VueJS和RxJS結(jié)合的能力。

我們來詳細了解一下。

在視圖上綁定Observable

VueJS本身不是基于RxJS這一套理念構(gòu)建的,如果不借助任何輔助的東西,可能我們會需要干這么一些事情:

手動訂閱某些Observable,在observer里面,把數(shù)據(jù)設(shè)置到Vue的data上 在視圖銷毀的時候,手動取消訂閱

在業(yè)務(wù)開發(fā)中,我們最常用的是綁定簡單的Observable,在vue-rx中,這個需求被很輕松地滿足了。

與早期版本不同,vue-rx 2.0在Vue實例上添加了一個subscriptions屬性,里面放置各種待綁定的Observable,用的時候類似data。

比如,我們可以這么用它:

rx-simple.vue

<template> <div>  <h4>Single Value</h4>  <div>{{single$}}</div>  <h4>Array</h4>  <ul>   <li v-for="item of arr0$">{{item}}</li>  </ul>  <ul>   <li v-for="item of arr1$">{{item}}</li>  </ul>  <h4>Interval</h4>  <div>{{interval$}}</div>  <h4>High-order</h4>  <div>{{high$}}</div> </div></template><script>import { Observable } from 'rxjs/Observable'import 'rxjs/add/observable/of'import 'rxjs/add/observable/from'import 'rxjs/add/operator/toArray'import 'rxjs/add/observable/interval'import 'rxjs/add/observable/range'import 'rxjs/add/operator/map'import 'rxjs/add/operator/mergeAll'const single$ = Observable.of(Math.PI)const arr0$ = Observable.of([1, 1, 2, 3, 5, 8, 13])const arr1$ = Observable.from([1, 1, 2, 3, 5, 8, 13]).toArray()const interval$ = Observable.interval(1000)const high$ = Observable.range(1, 5) .map(item => Observable.interval(item * 1000)) .mergeAll()export default { name: 'rx-simple', subscriptions: {  single$,  arr0$,  arr1$,  interval$,  high$ }}</script>

這個demo里面,演示了四種不同的Rx數(shù)據(jù)形態(tài)。其中,single$和interval$雖然創(chuàng)建方式不同,但實際上用的時候是一樣的,因為,對它們的訂閱,都是取其最后一個值,這兩者的區(qū)別只是,一個不變了,一個持續(xù)變,但界面展示的始終是最后那個值。

關(guān)于數(shù)組,初學(xué)者需要稍微注意一下,從同樣的數(shù)組,分別通過Observable.of和Observable.from出來的形態(tài)是大為不同的:

of創(chuàng)建的這個,里面只有一個值,這個值是個數(shù)組,所以,訂閱它,會得到一個數(shù)組 from創(chuàng)建的這個,里面有若干個值,每個值是由數(shù)組中的元素創(chuàng)建的,訂閱它,會一次性得到多個值,但展示的時候只會有最后一個,因為前面的都被覆蓋掉了
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 信阳市| 原阳县| 贞丰县| 黎平县| 盐山县| 新兴县| 当雄县| 贵州省| 博湖县| 恩平市| 洪洞县| 休宁县| 荃湾区| 偃师市| 屏东市| 右玉县| 岳阳县| 巴马| 苗栗市| 托里县| 察哈| 镇远县| 重庆市| 伊宁县| 老河口市| 荣昌县| 伊春市| 大港区| 达日县| 青铜峡市| 长垣县| 乌鲁木齐县| 滨海县| 封开县| 秀山| 大化| 玛曲县| 车致| 临夏市| 文安县| 广西|