眾所周知的小程序,都知道其誕生地是微信。最開始的愿景,是希望通過自定義一套全新的界面開發(fā)模式,來實現(xiàn)將微信能力安全、可控的開放使用。與此同時,微信團隊也希望能夠通過小程序規(guī)避掉之前用 Web 開發(fā)會遇到的各種問題,比如渲染卡頓、加載白屏時間長等問題,提供類似于原生的體驗、安全易用的微信數(shù)據(jù)開放、更多端能力的提供、簡單高效的開發(fā)方式。
其核心是前端容器化,分為UI和數(shù)據(jù)兩個層面。
- UI層面容器化,微信的解決方案很簡單,就是重新創(chuàng)建一套組件,完全拋棄 DOM 的標準組件。這樣就可以做到 UI 上的完全可控和安全。
- 數(shù)據(jù)層面容器化,本質上就是 JS 的沙盒,避免開發(fā)者直接拿到 UI 及其數(shù)據(jù),這也就誕生了小程序和別的差別最大的地方——雙線程架構。
這個架構簡單科普一下,分為:
- 邏輯層: 運行在端內創(chuàng)建的 JS 線程中,用戶的業(yè)務代碼在該線程中執(zhí)行,如你的 js 代碼
- 渲染層: 運行在端創(chuàng)建的 WebView 中,用戶的模板和樣式代碼在其中執(zhí)行,如你的 wxml、wxss 代碼
那么為什么要如此設計呢?其實最最主要地目的就是為了”安全”(并不是為了保障渲染的更順暢)是的,這是一個加了引號的安全,這里的安全是對小程序的平臺方來說的。任何軟件平臺都有它的游戲規(guī)則,比如 UI 界面的一致性,網(wǎng)絡請求域的收斂,平臺功能限制等,只是小程序稍有不同的是雖然是基于 web 技術,但并不想讓開發(fā)者使用到全量的 web技術。所以把用戶的代碼放到一個脫離 web 的線程中去運行就是一個最穩(wěn)妥的方案了。
技術標準及業(yè)務生態(tài)的演變
不得不說,小程序無論在技術標準還是業(yè)務生態(tài)發(fā)展,經(jīng)歷過近幾年的發(fā)展,都已經(jīng)有質的飛躍。相比于十幾年前的HTML5技術和生態(tài),有過之而無不及。
1、先說說技術標準
從Web 1.0進化到2.0之后的十幾年間,移動App都是各大軟件提供商用于爭奪消費者碎片化時間的主戰(zhàn)場。HTML5這種標準化的、普適的文本化內容編碼格式,被廣泛應用,并最終成為了互聯(lián)網(wǎng)的基石之一。Web2.0向3.0的進化過程中,軟件技術標準的擴展,小程序類技術的編碼和內容格式,整體基于HTML5基礎上,更加輕量,也更加開放有生命力。
從標準的角度看,當前互聯(lián)網(wǎng)上的小程序類技術,幾乎都借鑒了這個領域的先行者微信的規(guī)范??梢哉f,微信小程序就是這個領域的“既成事實”標準。故此互聯(lián)網(wǎng)系列全球標準的制定者W3C,也正在通過其Mini-Apps工作組制定國際標準。
2、再說說小程序業(yè)務生態(tài)
從2017年微信首次推出小程序開始,經(jīng)過四年發(fā)展,各大互聯(lián)網(wǎng)巨頭紛紛推出自己的小程序應用平臺,小程序成為真正意義上的“互聯(lián)網(wǎng)新技術標準”。截至2021年上半年,全網(wǎng)小程序數(shù)量突破700萬個,其中,微信小程序是行業(yè)主流,數(shù)量超過430萬個,占比高達約61.43%。
PC端運行小程序已成為潛力趨勢
雖然大家都默認在智能設備中運行小程序的能力是一線互聯(lián)網(wǎng)企業(yè)的“專利”,事實上,已經(jīng)有小程序容器技術可以實現(xiàn),F(xiàn)inClip能夠跑在手機、Windows、Mac、Linux、統(tǒng)信、麒麟等智能設備操作系統(tǒng)上。這意味著,移動端、PC 端、IOT等智能終端都能運行小程序了。
跨端框架,在一些大廠的小程序平臺中,有開始出現(xiàn)框架反制小程序引擎的問題。比如開發(fā)者想要對小程序自定義組件的時序進行一些優(yōu)化,讓其更加符合現(xiàn)代框架標準,卻發(fā)現(xiàn)強依賴了這個框架的時序,導致開發(fā)者根本無法將優(yōu)化立馬上線,因為一旦優(yōu)化,用了跨端框架的小程序幾乎全部無法運行。
一直都認為桌面應用中的瀏覽器是HTML5的“天下”,事實上,技術的進步,會給我們技術人帶來持續(xù)不斷的驚喜。小程序的技術及生態(tài),似乎在重復著HTML5當初繁盛一時的技術景象,未來發(fā)展如何,讓我們拭目以待。