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