市面上作為嵌入的組件的可用的瀏覽器內核,不外乎這幾個:webkit、cef、nwjs、electron。
1、cef:優點是由於集成的chromium內核,所以對H5支持的很全,同時因為使用的人也多,各種教程、示例,資源很多。但缺點很明顯,太大了。最新的cef已經誇張到了100多M,還要帶一堆的文件。同時新的cef已經不支持xp了(chromium對應版本是M49)。而且由於是多進程架構,對資源的消耗也很誇張。如果只是想做個小軟件,一坨文件需要帶上、超大的安裝包,顯然不能忍受。
2、nwjs,或者最近大火的electron:和cef內核類似,都是chromium內核。缺點和cef一模一樣。優點是由於可以使用nodejs的資源,同時又自帶了各種api的綁定,所以可以用的周邊資源非常豐富;而基於js的開發方案,使得前端很容易上手。所以最近N多項目都是基於nwjs或electron來實現。例如vscode,atom等等。
原版webkit:現在官網還在更新windows port,但顯然漫不在心,而且最新的webkit也很大了,超過20幾M。最關鍵的是,周邊資源很少,幾乎沒人再基於webkit來做開發。同時由於windows版的saferi已經停止開發了,所以用webkit就用不了他的dev tools了。這是個大遺憾。
3、WKE:這是個很老的webkit內核的裁剪版了。小是小,但bug太多了。
4、miniblink是什么?
Miniblink是一個追求極致小巧的瀏覽器內核項目,全世界第三大流行的瀏覽器內核控件。
其基於chromium最新版內核,去除了chromium所有多余的部件,只保留最基本的排版引擎blink。
Miniblink保持了10M左右的極簡大小,是所有同類產品最小的體積,同時支持windows xp、npapi。
首先,miniblink對大小要求非常嚴格。原版chromium、blink里對排版渲染沒啥大用的如音視頻全都被砍了,只專注於網頁的排版和渲染。甚至為了裁剪大小,我不惜使用vc6的crt來跑mininblink(見我上篇文章)。這個也算前無古人后無來者了。
其次,miniblink緊跟最新chromium,這意味着chromium相關的資源都可以利用。在未來的規划里,我是打算把electron的接口也加上的,這樣可以無縫替換electron。使用miniblink的話,開發調試時用原版electron,發布的時候再替換掉那些dll,直接可以無縫切換,非常方便。
miniblink如何使用?
Miniblink導出了electron、WKE的接口,可以直接無縫替換現有的electron、WKE項目。
早期miniblink還導出了CEF接口,不過現在已被廢棄。
miniblink有個小demo,從demo里可以看到,brackct這個基於cef的開源編輯器,已經順利由miniblink跑起來了。現在electron的接口已做好,vscode跑起來了。
這個比較復雜了。主要就是把blink從chromium抽離了出來,同時補上了cc層(硬件渲染層)。現在的blink,已經不是當年的那個webkit了,渲染部分全走cc層,復雜無比。我這大半年都在重寫他那個蛋疼又復雜的cc層。
和webkit比,miniblink架構有什么優勢
現在的webkit版本,已經比miniblink落后太多了。blink一直在加入各種極富創造力和想象力的功能、組件。例如,blink早就加入多線程解析html token、blink gc回收器、多線程錄制回放渲染機制。這些能讓blink的解析渲染速度極大提升。下一次,我會先開源出blink gc組件,這東西很有意思,在c++里硬是搞出了一個垃圾回收機制,能讓你像寫java一樣寫c++。
---------------------
作者:jlzw2018
來源:CSDN
原文:https://blog.csdn.net/jlzw2018/article/details/84317197
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!