前一篇文章里,分析了包括NW.js和electron這種純JS框架在內的幾種Web桌面應用開發方式,實際上還有一種最古老的方式,那就是嵌入WebView的方式。
嵌入WebView的方式和整個程序都是WEB窗口不同,僅在窗口的部分子窗口使用WebView,和原生UI或DirectUI結合的方式。
這種在C/C++程序里嵌入WebView的方式,由於沒有一種公認、通用的框架或方法,基本是最困難和最原始的方式蠻干,或者自研平台,難以公開。但是也有很多效果很棒,很著名的軟件。那么下面我們來細數一下這些桌面應用。
一、HTMLayout與sciter
HTMLayout是Web桌面應用平台里面的資深者。不開源,很小,不到1M大小(應該是加殼壓縮了,實際3M多)。應該是作者原創的HTML引擎。一開始限制很多,后繼者sciter強大了很多。6M大小。支持全平台開發,包括APP。因為不開源,所以網絡影響不是很大,都是企業用戶使用。
HTMLayout與sciter有一堆大名鼎鼎的用戶,國內的有遨游maxthon瀏覽器,搜狐和360等。
二、QQ:
最新版的QQ里面,帶了libcef3.dll,不到30M的體積,剪裁得不錯。控制腳本用得是Lua。
資料打了包,在包里有XML,HTML,LUA。看來是DirectUI和WEB混合開發。在頁面中使用WebCtrl,混合使用。
<UI>
<Window name="MedalWall" config="MedalWallWndConfig" location="50, 50" clientAreaSize="700,470" titleText="$@this:MedalWallWndCaption" fixSize="true" showMaxButton="false">
<!--<WebCtrl config="webkit" sizeAsParent="true" name="MedalWallPage" />-->
<Frame size="700,470">
<background>
<Brush clrFrom="0xFFFFFFFF"/>
</background>
</Frame>
</Window>
</UI>
三、豌豆莢
豌豆夾里帶了libcef.dll,大概38M大小,也帶了lua51.dll,不過現在還51是不是有點過時了,lua5.2 5.3都有很大的改進。
豌豆夾以前開源的OneRing項目也沒有了下文,程序里也看不到OneRing的痕跡了,應該是改頭換面了。
資源打了包。其全部頁面都不支持右鍵菜單,應該都是WEB的。雖然沒有使用混合界面,但和C++程序結合緊密,應該也還是有些貨的。
四、酷狗
有意思是的,酷狗的libcef.dll改名為infra.dll,40M大小
酷狗的資源打包成獨立文件,XML格式,估計是DirectUI與Web結合的方式
<Forms>
<OnekeyBackupPrompt Name="OnekeyBackupPrompt" RelativePosition="0,0,0,0" Anchors="left,top,right,bottom">
<Image Name="OnekeyBackupPromptBackground" Anchors="left,top,right,bottom" RelativePosition="-20,-20,-20,-20" Bitmap="PlaylistAddMark.png"/>
<Image Name="OnekeyBackupPromptLogo" Anchors="" RelativePosition="0,-34,122,70" Bitmap="onekey_backup_animation.png"/>
<Label Name="OnekeyBackupPromptTips" Anchors="" RelativePosition="-30,27,90,16"/>
<Label Name="OnekeyBackupPromptCancel" Anchors="" RelativePosition="51,28,52,16"/>
</OnekeyBackupPrompt>
</Forms>
在“AppData\Roaming\KuGou8\WebCache”目錄里,發現有解壓后的資源,的確是HTML頁面,證實使用了Web應用技術。
只是各個版本的垃圾資源信息能不能清理一下,難怪越來越大。
在“AppData\Roaming\KuGou8\AppStore”目錄發現在程序里面有sciter32.dll,看來也是sciter的用戶。
五、Duilib,soui2,DuiVision與WKE
Duilib,soui2,DuiVision是國內著名開源DirectUI庫,里面都內置了WKE引擎。
WKE是基於WebKit的精簡,優點是足夠小,11M大小。但是缺點是夠老和BUG多。
因為相關開源庫的DirectUI技術本身就是與WEB桌面應用相似的技術,基於XML開發界面。
所以很少人用WKE開發WEB桌面應用,基於WKE的WEB桌面應用還處在比較原始的階段。
WKE的傳送門GitHub - BlzFans/wke
而號稱史上最小chromium內核的miniblink,已經開源了,不知道如何。
作者比較活躍,給個傳送門吧:GitHub - weolar/miniblink49
總結:
Web桌面應用框架總得來說,要么難,要么弱,要么限制多。
雖然前端一直在推崇JS全棧,但是我覺得還是多語言配合更有利。
理想中的框架要這樣:核心算法能編譯+能與GUI框架結合+WEB只負責界面部分+有開源實現
golang+libui+cef+http+新框架,可能是個不錯的結合。
(完)