|
看了bang的博客對(duì)微信小程序的技術(shù)方案有了更深入的理解: 微信小程序必須要符合兩個(gè)剛需:管控 & 體驗(yàn) 管控:對(duì)于一個(gè)可以發(fā)布“小應(yīng)用”的平臺(tái),微信必須對(duì)其下發(fā)布的“小應(yīng)用”用著絕對(duì)的管控能力。 體驗(yàn):作為一個(gè)小程序需要讓其體驗(yàn)接近原聲,普通H5的體驗(yàn)不能達(dá)到這一需求。括頁(yè)面切換,啟動(dòng)速度,頁(yè)面的整體體驗(yàn),相對(duì)于原生都是無(wú)法相比的。 針對(duì)于以上兩個(gè)剛需,微信小程序是這樣做的: 對(duì)于管控:(1)DLS:想要對(duì)開(kāi)發(fā)者進(jìn)行管控,最好的方法就是自己設(shè)計(jì)一套框架,讓開(kāi)發(fā)者按照自己框架的規(guī)范進(jìn)行編碼,利用這套DLS(針對(duì)某一特定的領(lǐng)域設(shè)計(jì)的計(jì)算機(jī)語(yǔ)言)可以更好的針對(duì)不同的需求去優(yōu)化。 (2)JS環(huán)境:寫(xiě)過(guò)小程序的開(kāi)發(fā)者都了解,小程序中是無(wú)法調(diào)用任何DOM API的,為什么呢?是因?yàn)樾〕绦驅(qū)崿F(xiàn)了js的運(yùn)行環(huán)境與瀏覽器分離,運(yùn)行在單獨(dú)的js引擎上,脫離了瀏覽器,一切DOM操作在你的JS中是無(wú)法操作的,而小程序的核心JS是運(yùn)行在瀏覽器中的,這樣做的好處和壞處是什么呢? 好處:(1)避免開(kāi)發(fā)者進(jìn)行DOM操作,因?yàn)殚_(kāi)發(fā)者可能會(huì)通過(guò)不同的方式進(jìn)行上線后,繞過(guò)檢查,注入js文件,自由操作DOM接口去修改的界面和內(nèi)容,變成和審核時(shí)候不一樣的小程序來(lái)達(dá)到自己的目的,這中現(xiàn)象和之前iOS的熱更新原理是一樣的,在APP上線后,通過(guò)js腳本,去修改界面的樣式,內(nèi)容,或者調(diào)用官方私有API來(lái)做一些非法的操作,這種現(xiàn)象對(duì)于蘋(píng)果,微信這種超級(jí)平臺(tái)是很不敬的,同時(shí)對(duì)其安全也是有很大威脅的,它不會(huì)允許這種不可控的事件在自己的眼皮底下發(fā)生。但是熱更新對(duì)于原生APP來(lái)說(shuō)還是一個(gè)非常重要的需求。 (2)js和頁(yè)面渲染并行執(zhí)行,不會(huì)出現(xiàn)由于js執(zhí)行而卡住頁(yè)面的現(xiàn)象,提高渲染的性能。 壞處:(1)做過(guò)iOS和JS交互的同學(xué)應(yīng)該清楚大致流程,在iOS中執(zhí)行JS需要講JS代碼轉(zhuǎn)化為字符串,所以,小程序中的js要傳輸給原聲webview使用,需要進(jìn)行轉(zhuǎn)換為字符串來(lái)執(zhí)行。 (2)iOS上原生的WKWebView的JS引擎比javaScriptCore框架做了很多的優(yōu)化(使用和Safari相同的JS引擎),小程序上的js則無(wú)法享受這一優(yōu)點(diǎn)。 對(duì)于體驗(yàn):(1)因?yàn)樾〕绦蚴羌纳谠碌膽?yīng)用,通過(guò)native接口,我們可以用js調(diào)用一些原生的組件和方法,做出一些H5無(wú)法完成的任務(wù)和體驗(yàn)。 (2)退出小程序后,小程序后,小程序可以在后臺(tái)運(yùn)行5分鐘,用戶再次打開(kāi)時(shí),不需要重洗渲染小程序。 (3)同時(shí)得益于在原生環(huán)境下,小程序可以預(yù)加載多個(gè)WKWebView,可以省去WKWebView加載時(shí)間,提高用戶體驗(yàn)。 這之間的取舍就是對(duì)于業(yè)務(wù)和技術(shù)之間的取舍。在對(duì)用戶體驗(yàn)影響不大的情況下,對(duì)于技術(shù)上的取舍在業(yè)務(wù)上至關(guān)重要。 以上是通過(guò)bang的博客以及自己的理解記下的。 以下是自己最于最近的現(xiàn)象的一些見(jiàn)解嘮叨: (1)微信小程序平臺(tái)的管理機(jī)制:小程序的管控機(jī)制其實(shí)很大程度上是效仿蘋(píng)果對(duì)于旗下應(yīng)用的管控機(jī)制。蘋(píng)果對(duì)自家的應(yīng)用或者語(yǔ)言的監(jiān)控可謂是家長(zhǎng)對(duì)于孩子般的照顧了,當(dāng)然這和其自身利益和自身價(jià)值是分不開(kāi)的,對(duì)于前階段蘋(píng)果對(duì)于混合開(kāi)發(fā)的動(dòng)作(當(dāng)然這和安全隱患有著關(guān)系,如JSPatch調(diào)用私有API),大家可以搜索一下2016年之前和2016年之后Object-C和Swift的語(yǔ)言排行,相信可以看到一下原因。所以對(duì)旗下產(chǎn)品的管控對(duì)于其自身利益又著很大的作用。 (2)支付寶小程序和微信小程序:支付寶小程序剛推出時(shí),我看了一下它的文檔,確實(shí)和小程序很像,抄襲理念也是自然的了。這個(gè)我不考慮,只是寫(xiě)一些對(duì)與兩個(gè)超級(jí)平臺(tái)的不同看法(純屬個(gè)人見(jiàn)解,歡迎一起分享討論),兩個(gè)小程序確實(shí)存在著競(jìng)爭(zhēng),但是我認(rèn)為(不考慮兩個(gè)巨頭對(duì)于市場(chǎng)的戰(zhàn)略競(jìng)爭(zhēng)),兩個(gè)不同的平臺(tái)都擁有著自己不同優(yōu)勢(shì)產(chǎn)品細(xì)分領(lǐng)域下的深層的挖掘,比如說(shuō),在微信小程序上,我們可以對(duì)其社交進(jìn)行不同的細(xì)分,這種場(chǎng)景對(duì)于支付寶來(lái)說(shuō)并不合適的,但是在支付寶小程序中,金融類領(lǐng)域相對(duì)于微信來(lái)說(shuō)是其優(yōu)勢(shì),在支付寶中對(duì)其進(jìn)行深層次的挖掘也會(huì)帶來(lái)不一樣的效益。其實(shí)關(guān)鍵在于兩家超級(jí)平臺(tái)對(duì)于旗下優(yōu)勢(shì)產(chǎn)品的大數(shù)據(jù)層次的開(kāi)放程度,這些數(shù)據(jù)對(duì)寄生或者共存在其生態(tài)下的商戶來(lái)說(shuō)是可遇不可求的。這些數(shù)據(jù)和資源足可以再次創(chuàng)造多個(gè)的美團(tuán)和餓了么了,對(duì)于小公司的吸引力是很大的。所以個(gè)人認(rèn)為支付寶和小程序勝出關(guān)鍵在于對(duì)數(shù)據(jù)的開(kāi)發(fā)和不同時(shí)間節(jié)點(diǎn)的營(yíng)銷了,不同時(shí)間節(jié)點(diǎn)的營(yíng)銷同樣是很重要的,這個(gè)就是天時(shí)了。一個(gè)產(chǎn)品的成功,不僅僅靠的技術(shù),理念,甚至體驗(yàn),因?yàn)檫@些都是可以改變的,但是天時(shí)足可以影響一個(gè)產(chǎn)品的成敗。天時(shí),地利,人和才是其成功的關(guān)鍵。關(guān)于兩個(gè)超級(jí)平臺(tái)的發(fā)展,我們只能靜靜地觀察了,因?yàn)閷?duì)于吃瓜群眾的我而言,現(xiàn)在只能說(shuō)說(shuō)理解,發(fā)發(fā)牢騷(其實(shí)很多人都是了),但是我感覺(jué)這對(duì)個(gè)人的成長(zhǎng)也是有很大的好處的。 |