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>

三、豌豆荚
豌豆夹里带了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+新框架,可能是个不错的结合。
(完)
Web桌面应用框架2:著名的WEB桌面应用分析的更多相关文章
- Moco 框架以及其在 Web 集成测试的应用
转自:https://www.ibm.com/developerworks/cn/web/1405_liugang_mocowebtest/ Moco 框架以及其在 Web 集成测试的应用 我们往往将 ...
- 十七、EnterpriseFrameWork框架核心类库之Web控制器
回<[开源]EnterpriseFrameWork框架系列文章索引> EFW框架源代码下载:http://pan.baidu.com/s/1qWJjo3U EFW框架中的WebContro ...
- WEB移动应用框架构想(转载)
iUI.jQTouch.WPTouch.PhoneGap.XUI.iWebkit.Rhodes.gwt-mobile…当我们已经开始惊 叹 web移动应用充斥着各种各样框架与类库的时候,其实各大web ...
- 如果你不知道这11款常见的Web应用程序框架 就说明你out了
本文推荐了11款常见的Web应用程序框架,并列出了相关的学习资料和下载文档.如果对这些项目还不熟悉,就赶紧学起来吧~ Rails Rails是Ruby on Rails的简称,是一款开源的Web应用框 ...
- 10个优秀的 Web UI库/框架
UI(User Interface)即用户界面,也称人机界面.是指用户和某些系统进行交互方法的集合,实现信息的内部形式与人类可以接受形式之间的转换.本文为WUI用户整理了10个优秀的 Web UI 库 ...
- Web前端MVC框架的意义分析
前言: Web前端开发是Web技术发展中的一个重要组成部分,在传统的前端开发中由于外界因素的影响导致其开发形式呈现出简单化的特点,即以页面为主体来展示界面中的信息.然而随着科学技术的不断进步,Web前 ...
- web前端基础知识-(六)web框架
一.web框架本质 众所周知,对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端. #!/usr/bin/env python #coding:ut ...
- 感恩回馈,《ASP.NET Web API 2框架揭秘》免费赠送
在继<WCF全面解析(上下册)>.<ASP.NET MVC 4框架揭秘>之后,我的另一本书<ASP.NET Web API 2框架揭秘>( 本书详细信息见< ...
- 《ASP.NET Web API 2框架揭秘》样章(PDF版本)
<ASP.NET Web API 2框架揭秘>(详情请见<新作<ASP.NET Web API 2框架揭秘>正式出版>)以实例演示的方式介绍了很多与ASP.NET ...
随机推荐
- 使用Fiddler调试手机端页面请求/抓包
简介 Fiddler作为一个强大的抓包工具,也是非常强大的http(s)协议分析工具,我们通常用它跟踪请求,PC端使用这里暂不做介绍(这里前提是熟悉PC端的使用),使用很简单. 那么我们如何来用它来跟 ...
- 亚马逊AWS EC2云实例AMI安装LNMP环境(2)——PHP5.6
概括:这里选择亚马逊EC2的Linux AMI实例,该Linux服务器是亚马逊预配置的Linux环境,内置多个YUM源,属于亚马逊首推的稳定Linux服务器.默认登录用户名为ec2-user,执行ro ...
- expdp导出文件,ORA-01555: 快照过旧: 回退段号 716
快照号过旧,回退段号过小,信息如下:ORA-31693: 表数据对象 "CZBSDB"."SMS_RESULT_RECORD" 无法加载/卸载并且被跳过, 错误 ...
- gitlab 实现自动部署(简单Python实现)
功能说明: 当本地master分支执行push动作的时候,服务器端会自动执行master分支的pull操作(还可以执行一些自动化脚本) 原理: git hooks就是那些在git执行特定事件(如com ...
- 【Spring】浅谈ContextLoaderListener及其上下文与DispatcherServlet的区别
一般在使用SpingMVC开发的项目中,一般都会在web.xml文件中配置ContextLoaderListener监听器,如下: <listener> <listener-clas ...
- 【LeetCode】数组-3(605)-种花问题( 1 的两侧不能有 1 )
开始的思路:首先统计需要种几只花,用花的数目统计连续 0 的个数.... ...[囧]突然觉得情况有点复杂啊,有连续的又有分散的怎么能统计全呢? 好吧这里喔偷偷的瞄了一眼参看答案... ...(就一眼 ...
- Dinic算法详解及实现
预备知识: 残留网络:设有容量网络G(V,E)及其上的网络流f,G关于f的残留网络即为G(V',E'),其中G'的顶点集V'和G的顶点集V相同,即V'=V,对于G中任何一条弧<u,v>,如 ...
- java protected修饰符理解
Protected类型可以在本包和子类中访问的含义.在本包中访问,顾名思义,可以在定义类的包中的任何地方申请一个包含protected修饰符的域和方法的类的对象,并通过这个对象访问被protected ...
- python selenium无法最大化窗口
问题原因:报错提示cannot get automation extension根据各种调试,发现是对应版本不对,上图发现selenium的版本是57.0.2987.133,需要driver为2.29 ...
- C++ 大多数人将 cin::sync() 视为清除缓存区函数的误用
ps:我发现有网站将我之前写的标题为:C++ 关于大多数人将cin::sync()视为清楚缓冲区函数的错误 的文章转载了,声明一下那篇文章中的内容可能存在错误,本人已删,请注意. 一百度,大多数人 ...