了解最新公司動(dòng)態(tài)及行業(yè)資訊
體驗(yàn)完利益相關(guān)微票兒的「電影演出賽事」后,我在朋友圈里怒發(fā)了一條「實(shí)際體驗(yàn)小程序的感覺(jué)就是完全沒(méi)有比普通的 web 體驗(yàn)更好…」,感覺(jué)評(píng)論里
都受驚了 > <。不過(guò)在多體驗(yàn)了幾個(gè)小程序之后,我覺(jué)得我應(yīng)該嘗試更客觀的回答這個(gè)問(wèn)題。
這當(dāng)然是毋庸置疑的,我的博客在微信里打開至今都是「非微信官方網(wǎng)頁(yè),繼續(xù)訪問(wèn)將轉(zhuǎn)換成手機(jī)預(yù)覽模式」,然后點(diǎn)擊「繼續(xù)訪問(wèn)」就是「params is error」,我 &^*#.%...
而對(duì)于其他在微信中可訪問(wèn)的 web 應(yīng)用來(lái)說(shuō),小程序有著自己的搜索入口、抽屜(歷史記錄),還可以「顯示在聊天頂部」,這其實(shí)分別對(duì)應(yīng)著 「拉新」、「包活」 與一定的「多任務(wù)」支持。尤其是后兩者,與 PWA 的「添加至主屏」與「出現(xiàn)在 Task Switcher」里異曲同工。
正如 微信小程序和網(wǎng)頁(yè)版程序的區(qū)別在哪里? - 馮雨的回答 說(shuō)的,「訂閱號(hào)、服務(wù)號(hào)、小程序,就是一個(gè)個(gè)靜態(tài)或動(dòng)態(tài)的 Web站點(diǎn);二維碼和消息氣泡,一個(gè)現(xiàn)實(shí)一個(gè)虛擬,就是微信提供的超級(jí)鏈接?!?/p>
World Wide Web 在微信里是殘廢的,取而代之的是 Weixin/Wechat Wide Web。
值得一提的是,現(xiàn)在微信只會(huì)對(duì)特定小程序支持模糊搜索,而且據(jù)我目測(cè)都是諸如京東、滴滴這樣的「國(guó)家隊(duì)」。喏,在我地盤這你就得聽(tīng)我的~ ? ?
當(dāng)我們?cè)谡f(shuō)「小程序的體驗(yàn)是否能比 Web 更接近原生應(yīng)用」時(shí),我們通常指的就是它的 capability。
先說(shuō) UI 性能,截止目前為止,小程序的大部分組件都還是使用 WebView 渲染的,這意味著在大多數(shù)組件場(chǎng)景下,小程序的 UI 性能不可能比 Web 更高。但是:
小程序團(tuán)隊(duì)非常 tricky 地把力氣都用在了刀刃上:每一個(gè)使用原生 UI 渲染、或在自定義 WebView 中優(yōu)化過(guò)的組件都對(duì)應(yīng)著 Mobile Web 中的一個(gè)老大難問(wèn)題。比如在 iOS 上讓頂部或底部的 Tab Bar "Fixed",比如視頻的自動(dòng)播放與控制力,比如地圖、textarea 等,可以說(shuō)利用有限的資源顯著提高了小程序的可用性。
由于 Web 前端開發(fā)者的良莠不齊,小程序通過(guò)限定一組 Web 技術(shù)的子集,可以很好的約束開發(fā)者寫出性能與體驗(yàn)不低于基線的代碼,這與 Google 的 AMP 異曲同工。(其實(shí)這是大家覺(jué)得小程序體驗(yàn)比 Web 好的很大一個(gè)原因)
由于小程序中的 wxml 與 wxss 都是比較 high-level 的抽象,所以微信團(tuán)隊(duì)可以在不影響開發(fā)者源代碼的情況下,通過(guò)升級(jí) Runtime 與組件的實(shí)現(xiàn)不斷優(yōu)化小程序的性能,比如完全遷移到類似 React Native 或 Weex 這樣的 JS-to-Native 方案。
再說(shuō)啟動(dòng)性能,這是讓大家覺(jué)得小程序感知體驗(yàn)比 Web 好的第二個(gè)大因素:
由于小程序是打包部署并「安裝」的,可以從文件系統(tǒng)中直接啟動(dòng)。以此解決 web 帶來(lái)的網(wǎng)絡(luò)延遲與離線時(shí)不可訪問(wèn)問(wèn)題。
最后是 Integration。通過(guò)私有的 JS SDK,小程序可以借助微信這座橋梁實(shí)現(xiàn)很多以往 Web 并不容易實(shí)現(xiàn)的體驗(yàn)。同樣,這些改進(jìn)也非常 tricky,只解決痛點(diǎn)問(wèn)題:
設(shè)備訪問(wèn)能力,文件、系統(tǒng)、網(wǎng)絡(luò)、GPS、加速計(jì)、羅盤……
「第一公民」能力,最明顯的莫過(guò)于設(shè)置導(dǎo)航條和頁(yè)與頁(yè)之間的動(dòng)畫。還有 Android 設(shè)備上的「添加小程序到桌面」,其實(shí)就是個(gè)快捷方式。
(圖為貓眼 App 與小程序,因?yàn)殚L(zhǎng)得像…感覺(jué)不小心給老東家競(jìng)爭(zhēng)對(duì)手打廣告了?)
可惜的是,這些技術(shù)里面沒(méi)有一項(xiàng)是「小程序」首創(chuàng)的,且大都有超過(guò)兩年的歷史:百度的 Blend UI、阿里的 Hybrid 容器、Google 的 PWA/AMP、Phonegap/Cordova、React Native/Weex……這也是很多技術(shù)從業(yè)人吐槽小程序在技術(shù)上毫無(wú)創(chuàng)新的原因。
但平心而論,崇尚「技術(shù)服務(wù)產(chǎn)品」的騰訊系在產(chǎn)品化上做的真心出色。這也是我為什么在 9 月 21 日知道小程序技術(shù)方案時(shí)夸贊「兼容并蓄 博采眾長(zhǎng) 且可持續(xù)性發(fā)展」的原因,并不是站在技術(shù)創(chuàng)新的角度,而是站在微信的角度上,這個(gè)決策拿捏在了 sweet point 上。
目前我所了解到的(截止 2017 年 1 月 9 日):
小程序?qū)Ρ?Web,只能通過(guò)攝像頭掃碼,不能分享朋友圈,營(yíng)銷難做,這是 Reach。
小程序中沒(méi)有真正的超鏈接與 WebView,完全不能外鏈,這是 Linkability。如果知乎要做小程序,所有答案里的超鏈接都只能報(bào)廢?;蛘咧荒芟褫p芒雜志那樣,做一層轉(zhuǎn)碼,美其名曰閱讀模式。
小程序目前的組件雖然 cover 了大部分場(chǎng)景,但是也明顯有很多不能 cover 到的 case,這是 Scalability。
這三點(diǎn)都是可以直接影響到目前小程序的產(chǎn)品形態(tài)與設(shè)計(jì)的。當(dāng)然,對(duì)于微信來(lái)說(shuō),這三點(diǎn)更多的是決策問(wèn)題。作為 Weixin Wide Web 這個(gè)封閉生態(tài)的唯一「瀏覽器」,微信便是生殺大權(quán)。手起刀落之間,小程序的缺點(diǎn)隨時(shí)可以被彌補(bǔ),而 Web 的優(yōu)點(diǎn)也隨時(shí)可以被抹殺。
但是,現(xiàn)實(shí)可能并不會(huì)這么簡(jiǎn)單。我們發(fā)現(xiàn),大部分小程序都只提供了其原生應(yīng)用或 web 應(yīng)用功能的一個(gè)子集。比如文章最早提到的微票兒的「電影演出賽事」小程序,與錢包里的 web 版本相比,UI 體驗(yàn)好了一點(diǎn),但是功能遠(yuǎn)沒(méi)有 web 版本來(lái)得豐富,也沒(méi)有了 web 版本可以分享評(píng)論到朋友圈的能力。
(微票兒小程序與其錢包中的內(nèi)嵌 web 應(yīng)用對(duì)比,web 版的功能要豐富得多。)
微票兒(娛票兒)作為一家在微信里內(nèi)嵌 web 服務(wù)起家的公司,一是證明了微信流量紅利的可怕,二其實(shí)也證明了原有 web 的能力。作為「親騰訊親微信」的公司之一,其小程序比不上 web 應(yīng)用可能只是時(shí)間關(guān)系。但是對(duì)于其他公司呢,尤其是未被騰訊「臨幸」過(guò)的公司?而這其實(shí)對(duì)應(yīng)著另一個(gè)更難回答的問(wèn)題:
筆者自知無(wú)法回答這個(gè)問(wèn)題,所以只能拋磚引玉一下:
具體到每一個(gè) Web 與小程序 PK 的場(chǎng)景:
對(duì)于簡(jiǎn)單體驗(yàn),小程序的一點(diǎn)點(diǎn)體驗(yàn)提升對(duì)比 Web 的跨平臺(tái)與傳播能力沒(méi)有優(yōu)勢(shì)
對(duì)于中等體驗(yàn),小程序體驗(yàn)更好,但需要付出額外的人力資源與開發(fā)維護(hù)成本
對(duì)于核心體驗(yàn),大家的目標(biāo)都是拉回自己的主場(chǎng)
如果說(shuō)阿里的「讓天下沒(méi)有難做的生意」是把話說(shuō)開來(lái)「雙贏」,微信「開放」平臺(tái)和接入商之間的資源互換關(guān)系則更像是「權(quán)力的游戲」了:微信想借接入商來(lái)建立自己的壟斷帝國(guó),接入商卻想玩暗度陳倉(cāng)。某種程度上來(lái)說(shuō),Web 應(yīng)用是自己的領(lǐng)地,值得在上面建立完整的體驗(yàn)。而小程序,可能會(huì)如小程序誕生前的「weixin-specific web」一樣,很大程度上淪為拉新立牌坊的工具。
所以我們不妨再加一條:
4. 對(duì)于用戶來(lái)說(shuō),小程序可能并不會(huì)「夠用」,這是 Feature Set。
回到問(wèn)題「小程序的體驗(yàn)比 Web 更好嗎?」,我覺(jué)得各位看官心里應(yīng)該會(huì)有自己的答案。對(duì)于不同的公司,不同的業(yè)務(wù)場(chǎng)景,不同的盈利方式,不同的團(tuán)隊(duì),我相信這個(gè)答案都是不一樣的。
But if you trade something off, make sure you get something in return.
如果你需要妥協(xié)掉一些東西,請(qǐng)務(wù)必?fù)Q回點(diǎn)好處來(lái)。
作為一篇「試圖做到客觀(且非常難)」的文章,如果能對(duì)你有幫助,那就算沒(méi)有白寫了。
最后說(shuō)兩句題外話吧,上個(gè)月給《程序員》雜志交了拖了 N 久的稿,大概在本月底會(huì)發(fā)吧?
在那篇文章最后我寫到,「筆者奢望著本文能對(duì)推動(dòng) PWA 的國(guó)內(nèi)環(huán)境有一定的貢獻(xiàn)」。眼見(jiàn)小程序在某種意義上 "polyfill" (大霧)了 PWA,作為一個(gè)在技術(shù)上略有 理想主義 的程序員,筆者也只能嘆一句了:這不是我想要的未來(lái)