市面上做爲嵌入的組件的可用的瀏覽器內核,不外乎這幾個:webkit、cef、nwjs、electron。html
一、cef:優勢是因爲集成的chromium內核,因此對H5支持的很全,同時由於使用的人也多,各類教程、示例,資源不少。但缺點很明顯,太大了。最新的cef已經誇張到了100多M,還要帶一堆的文件。同時新的cef已經不支持xp了(chromium對應版本是M49)。並且因爲是多進程架構,對資源的消耗也很誇張。若是隻是想作個小軟件,一坨文件須要帶上、超大的安裝包,顯然不能忍受。 前端
二、nwjs,或者最近大火的electron:和cef內核相似,都是chromium內核。缺點和cef如出一轍。優勢是因爲可使用nodejs的資源,同時又自帶了各類api的綁定,因此能夠用的周邊資源很是豐富;而基於js的開發方案,使得前端很容易上手。因此最近N多項目都是基於nwjs或electron來實現。例如vscode,atom等等。 java
原版webkit:如今官網還在更新windows port,但顯然漫不在心,並且最新的webkit也很大了,超過20幾M。最關鍵的是,周邊資源不多,幾乎沒人再基於webkit來作開發。同時因爲windows版的saferi已經中止開發了,因此用webkit就用不了他的dev tools了。這是個大遺憾。 node
三、WKE:這是個很老的webkit內核的裁剪版了。小是小,但bug太多了。c++
四、miniblink是什麼?web
Miniblink是一個追求極致小巧的瀏覽器內核項目,全世界第三大流行的瀏覽器內核控件。windows
其基於chromium最新版內核,去除了chromium全部多餘的部件,只保留最基本的排版引擎blink。api
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 版權聲明:本文爲博主原創文章,轉載請附上博文連接!