什么是 Meteor 的 Optimistic UI

原理介紹

Optimistic UI 是 Meteor 提出來(lái)的一種前端界面快速響應(yīng)用戶交互的概念蛙讥,之前叫 Latency Compensation翠储,主要作用是在客戶端直接響應(yīng)用戶的交互曲尸,而不用等信息從客戶端發(fā)送到服務(wù)器镇匀,完成更新確認(rèn)牙寞,再?gòu)姆?wù)器返回客戶端這一個(gè)來(lái)回完成后再做響應(yīng)葡公。有點(diǎn)類似游戲領(lǐng)域里的 Dead Reckoning罐农,在客戶端離線對(duì)用戶行為進(jìn)行推測(cè),達(dá)到隱藏延時(shí)和減少帶寬使用的技術(shù)催什。

先看下圖理解 Optimistic UI 的原理涵亏。

Optimistic UI

魔法就發(fā)生在虛線處。簡(jiǎn)單來(lái)說(shuō) Method Call 其實(shí)有兩個(gè)蒲凶,一個(gè)在服務(wù)器端气筋,這個(gè)是起真正作用的;另外一個(gè)在客戶端旋圆,是一個(gè)模擬函數(shù)(也叫樁函數(shù) stub function)會(huì)直接對(duì)客戶端的 MiniMongo 數(shù)據(jù)庫(kù)進(jìn)行修改宠默,這樣用戶就可以立即看到界面的更新(Meteor 的 reactive 特性會(huì)讓界面根據(jù) MiniMongo 更新),而不用等上圖下半部分的藍(lán)色 Network latency 和 Data for client-side cache 過程完成了臂聋。

再來(lái)看看幾個(gè)例子光稼。

沒有使用 Optimistic UI

下圖是沒有 Optimistic UI 的時(shí)候『⒌龋可以看到任務(wù)輸入完成后過了大概 2 秒才更新艾君。這 2 秒就是模擬的前面原理圖下部的延遲。

noOpti.gif

使用 Optimistic UI

下圖是使用了 Optimistic UI肄方”ⅲ可以看到任務(wù)輸入完成后列表立即就有了改變,而我們看不到的是服務(wù)器端也靜靜地完成了更新权她,用戶只會(huì)感覺這個(gè)系統(tǒng)使用起來(lái)非常流暢虹茶,體驗(yàn)提升。

optimistic.gif

使用 Optimistic UI隅要,但是服務(wù)器端更新失敗蝴罪,前端自動(dòng)回滾

下圖是使用了 Optimistic UI,但是服務(wù)器端因?yàn)榉N種原因更新失敗的過程模擬步清∫牛可以看到任務(wù)輸入完成后列表立即就有了更新虏肾,但是大概 2 秒后因?yàn)榉?wù)器確認(rèn)更新失敗,前端界面再次更新欢搜,恢復(fù)到和服務(wù)器端同步后該有的結(jié)果封豪。當(dāng)然這個(gè)過程需要更多改進(jìn)來(lái)優(yōu)化用戶在交互失敗時(shí)的體驗(yàn),而不是簡(jiǎn)單粗暴的回滾回初始值炒瘟。

failedOpti.gif

小結(jié)

這就是 Meteor 的 Optimistic UI吹埠,一種積極樂觀的界面更新策略,它是基于我們大部分的用戶互動(dòng)都是成功的預(yù)測(cè)之上疮装。如果追求極致的用戶體驗(yàn)缘琅,達(dá)到實(shí)時(shí)更新,可以使用 Meteor 來(lái)輕松做到廓推,別的框架得另外寫很多代碼來(lái)維護(hù)這一套機(jī)制胯杭,增加工作量和出錯(cuò)機(jī)會(huì)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末受啥,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子鸽心,更是在濱河造成了極大的恐慌滚局,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,561評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件顽频,死亡現(xiàn)場(chǎng)離奇詭異藤肢,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)糯景,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,218評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門嘁圈,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人蟀淮,你說(shuō)我怎么就攤上這事最住。” “怎么了怠惶?”我有些...
    開封第一講書人閱讀 157,162評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵涨缚,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我策治,道長(zhǎng)脓魏,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,470評(píng)論 1 283
  • 正文 為了忘掉前任通惫,我火速辦了婚禮茂翔,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘履腋。我一直安慰自己珊燎,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,550評(píng)論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著俐末,像睡著了一般料按。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上卓箫,一...
    開封第一講書人閱讀 49,806評(píng)論 1 290
  • 那天载矿,我揣著相機(jī)與錄音,去河邊找鬼烹卒。 笑死闷盔,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的旅急。 我是一名探鬼主播逢勾,決...
    沈念sama閱讀 38,951評(píng)論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼藐吮!你這毒婦竟也來(lái)了溺拱?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,712評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤谣辞,失蹤者是張志新(化名)和其女友劉穎迫摔,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體泥从,經(jīng)...
    沈念sama閱讀 44,166評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡句占,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,510評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了躯嫉。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片纱烘。...
    茶點(diǎn)故事閱讀 38,643評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖祈餐,靈堂內(nèi)的尸體忽然破棺而出擂啥,到底是詐尸還是另有隱情,我是刑警寧澤昼弟,帶...
    沈念sama閱讀 34,306評(píng)論 4 330
  • 正文 年R本政府宣布啤它,位于F島的核電站,受9級(jí)特大地震影響舱痘,放射性物質(zhì)發(fā)生泄漏变骡。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,930評(píng)論 3 313
  • 文/蒙蒙 一芭逝、第九天 我趴在偏房一處隱蔽的房頂上張望塌碌。 院中可真熱鬧,春花似錦旬盯、人聲如沸台妆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,745評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)接剩。三九已至切厘,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間懊缺,已是汗流浹背疫稿。 一陣腳步聲響...
    開封第一講書人閱讀 31,983評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留鹃两,地道東北人遗座。 一個(gè)月前我還...
    沈念sama閱讀 46,351評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像俊扳,于是被迫代替她去往敵國(guó)和親途蒋。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,509評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理馋记,服務(wù)發(fā)現(xiàn)号坡,斷路器,智...
    卡卡羅2017閱讀 134,633評(píng)論 18 139
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,769評(píng)論 25 707
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫(kù)梯醒、插件筋帖、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,064評(píng)論 4 62
  • 為什么希臘神話故事中迷幻癲狂的酒神殺死了太陽(yáng)神的兒子?達(dá)芬奇為什么晚年要畫《酒神》冤馏? 是的,這段希臘故事很奇怪寄啼,俄...
    嘻哈哲學(xué)閱讀 1,181評(píng)論 2 1