InfoQ:
當(dāng)時(shí)小程序還沒發(fā)布時(shí)腿倚,坊間傳說小程序使用了類似RN的技術(shù),發(fā)布后人們發(fā)現(xiàn)它還是運(yùn)行在WebView里的。
不知道實(shí)際情況如何暂筝?
王躍:從技術(shù)實(shí)現(xiàn)的層面來說,不管是小程序陨收,還是RN胧洒,或者Weex畏吓,都有共同點(diǎn)卫漫,比如JS和Native的通訊機(jī)制,比如JS直接調(diào)用原生組件的渲染列赎,如在iOS平臺(tái),小程序和RN都采用JavaScriptCore來執(zhí)行JS饼煞。但是小程序和RN設(shè)計(jì)初衷和應(yīng)對(duì)的場(chǎng)景不一樣,我們知道小程序的場(chǎng)景主要是在當(dāng)前實(shí)際物理場(chǎng)景用戶可以即掃即用砖瞧,用完即走嚷狞,整個(gè)交互都是非常輕量級(jí)的,不涉及特別復(fù)雜的交互邏輯床未,所以在設(shè)計(jì)上考慮盡量簡(jiǎn)單,首先是系統(tǒng)底層框架簡(jiǎn)單薇搁,其次開發(fā)者開發(fā)簡(jiǎn)單,再次用戶使用簡(jiǎn)單啃洋,所以小程序大部分的UI組件還是H5的渲染方式,而不是像RN設(shè)計(jì)成Native的UI組件损离。
當(dāng)然小程序本身為了解決部分組件性能的問題也采用了Native的方式绝编,所以方案上的選項(xiàng)主要是基于實(shí)際場(chǎng)景考慮貌踏,不是純技術(shù)上的考量。
另外準(zhǔn)確的說小程序不僅僅運(yùn)行在Webview里祖乳,需要區(qū)分不同的部分秉氧,這個(gè)在我的分享里會(huì)有詳細(xì)的解釋。
InfoQ:
剛發(fā)布時(shí)有人發(fā)現(xiàn)小程序的一些代碼和Vue的有點(diǎn)像汁咏,而單向數(shù)據(jù)流又讓人聯(lián)想到React。
在當(dāng)初開發(fā)小程序核心框架的時(shí)候有哪些思考攘滩?
王躍:這個(gè)跟問題2類似,首先小程序和Vue赖瞒,React本質(zhì)上還是不一樣的,小程序是需要特定的Native層支持栏饮,同時(shí)底層功能也更強(qiáng)大磷仰,而Vue和React運(yùn)行在通用的WebView之上,不需要特定Native支持灶平,但大家為什么覺得會(huì)有些類似呢,主要是指在數(shù)據(jù)綁定民逼,事件綁定等部分的實(shí)現(xiàn)上會(huì)有一些類似涮帘,當(dāng)然這幾種技術(shù)沒有好壞,主要還是看我們是解決什么場(chǎng)景下的什么問題疮鲫。