天天看點

Web桌面應用架構2:著名的WEB桌面應用分析

前一篇文章裡,分析了包括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>

Web桌面應用架構2:著名的WEB桌面應用分析

三、豌豆莢

豌豆夾裡帶了libcef.dll,大概38M大小,也帶了lua51.dll,不過現在還51是不是有點過時了,lua5.2 5.3都有很大的改進。

豌豆夾以前開源的OneRing項目也沒有了下文,程式裡也看不到OneRing的痕迹了,應該是改頭換面了。

資源打了包。其全部頁面都不支援右鍵菜單,應該都是WEB的。雖然沒有使用混合界面,但和C++程式結合緊密,應該也還是有些貨的。

Web桌面應用架構2:著名的WEB桌面應用分析

四、酷狗

有意思是的,酷狗的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+新架構,可能是個不錯的結合。

 (完)