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