聽說最近微信官方推出了一個統一 Web 前端和小程序的框架 —— Kbone ,特意去看了下。。。
為什么微信要搞Kbone?
微信小程序的底層模型和 Web 端不同,開發者無法直接把 Web 端的代碼挪到小程序環境內執行。
Kbone 的誕生就是為了解決這個問題,它實現了一個適配器,在適配層里模擬出了瀏覽器環境,讓 Web 端的代碼可以不做什么改動,便可運行在小程序里。
那么Kbone 有哪些優勢?
因為 kbone 是通過提供適配器的方式來實現同構,所以它的優勢很明顯:
大部分流行的前端框架都能夠在 kbone 上運行,比如 Vue、React、Preact 等。
支持更為完整的前端框架特性,因為 kbone 不會對框架底層進行刪改(比如 Vue 中的 v-html 指令、Vue-router 插件)。
提供了常用的 dom/bom 接口,讓用戶代碼無需做太大改動便可從 Web 端遷移到小程序端。
在小程序端運行時,仍然可以使用小程序本身的特性(比如像 live-player 內置組件、分包功能)。
提供了一些 Dom 擴展接口,讓一些無法完美兼容到小程序端的接口也有替代使用方案(比如 getComputedStyle 接口)。
到底如何選擇?
業內其實已經出現了很多關於同構的解決方案了,每個方案都有自己的優劣,不存在能夠完美解決所有問題的方案。kbone 也一樣,它的優勢在上面提到過,而它的不足也是它的實現原理帶來的。kbone 是使用一定的性能損耗,來換取更為全面的 Web 端特性支持。
所以關於性能方面,如果你對小程序的性能特別苛刻,建議直接使用原生小程序開發;如果你的頁面節點數量特別多(通常在 1000 節點以上),同時還要保證在節點數無限上漲時仍然有穩定的渲染性能的話,可以嘗試一下業內采用靜態模板轉譯的方案;其他情況就可以直接采用 kbone 了。
Kbone 的使用方法,還是參見官方文檔吧:
https://developers.weixin.qq.com/miniprogram/dev/extended/kbone/