前一篇文章里,分析了包括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桌面应用分析的更多相关文章

  1. Moco 框架以及其在 Web 集成测试的应用

    转自:https://www.ibm.com/developerworks/cn/web/1405_liugang_mocowebtest/ Moco 框架以及其在 Web 集成测试的应用 我们往往将 ...

  2. 十七、EnterpriseFrameWork框架核心类库之Web控制器

    回<[开源]EnterpriseFrameWork框架系列文章索引> EFW框架源代码下载:http://pan.baidu.com/s/1qWJjo3U EFW框架中的WebContro ...

  3. WEB移动应用框架构想(转载)

    iUI.jQTouch.WPTouch.PhoneGap.XUI.iWebkit.Rhodes.gwt-mobile…当我们已经开始惊 叹 web移动应用充斥着各种各样框架与类库的时候,其实各大web ...

  4. 如果你不知道这11款常见的Web应用程序框架 就说明你out了

    本文推荐了11款常见的Web应用程序框架,并列出了相关的学习资料和下载文档.如果对这些项目还不熟悉,就赶紧学起来吧~ Rails Rails是Ruby on Rails的简称,是一款开源的Web应用框 ...

  5. 10个优秀的 Web UI库/框架

    UI(User Interface)即用户界面,也称人机界面.是指用户和某些系统进行交互方法的集合,实现信息的内部形式与人类可以接受形式之间的转换.本文为WUI用户整理了10个优秀的 Web UI 库 ...

  6. Web前端MVC框架的意义分析

    前言: Web前端开发是Web技术发展中的一个重要组成部分,在传统的前端开发中由于外界因素的影响导致其开发形式呈现出简单化的特点,即以页面为主体来展示界面中的信息.然而随着科学技术的不断进步,Web前 ...

  7. web前端基础知识-(六)web框架

    一.web框架本质 众所周知,对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端. #!/usr/bin/env python #coding:ut ...

  8. 感恩回馈,《ASP.NET Web API 2框架揭秘》免费赠送

      在继<WCF全面解析(上下册)>.<ASP.NET MVC 4框架揭秘>之后,我的另一本书<ASP.NET Web API 2框架揭秘>( 本书详细信息见< ...

  9. 《ASP.NET Web API 2框架揭秘》样章(PDF版本)

    <ASP.NET Web API 2框架揭秘>(详情请见<新作<ASP.NET Web API 2框架揭秘>正式出版>)以实例演示的方式介绍了很多与ASP.NET ...

随机推荐

  1. (MVC)javaBaen+jsp+servlet对数据的操作

    运用MVC对数据进行一些简单的处理,基本实现数据的增删改查,达到前端和后台的数据之间的交互. 1.开始界面 <%@page import="com.zdsofe.work.Studen ...

  2. spring boot 整合mybatis + swagger2

    之前使用springMVC+spring+mybatis,总是被一些繁琐的xml配置,有时候如果配置出错,还要检查各种xml配置,偶然接触到了spring boot 后发现搭建一个web项目真的是1分 ...

  3. HDU - 3853

    LOOPS Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 125536/65536 K (Java/Others)Total Sub ...

  4. 一步一步学习Vue(十一)

    本篇继续学习vuex,还是以实例为主:我们以一步一步学Vue(四)中讲述的例子为基础,对其改造,基于vuex重构一遍,这是原始的代码: todolist.js ; (function () { var ...

  5. Android中的Activity

    Android四大组件 活动(Activity) 广播接收者(BroadCastReceiver) 服务(Service) 内容提供者(Contentprovider) Activity 先来看And ...

  6. [NOIP 2011]聪明的质监员

    聪明的质监员 题目 小 T 是一名质量监督员,最近负责检验一批矿产的质量.这批矿产共有n个矿石,从 1 到n逐一编号,每个矿石都有自己的重量wi以及价值vi.检验矿产的流程是: 1. 给定 m个区间[ ...

  7. RedHat Enterprise Linu…

    RedHat Enterprise Linux 6.4 使用Centos 6 的yum 源问题 2015.04.09 一.问题描述 有时在使用RedHat 系统进行安装某些软件时,会出现如下提示: T ...

  8. 机器学习实战 logistic回归 python代码

    # -*- coding: utf-8 -*- """ Created on Sun Aug 06 15:57:18 2017 @author: mdz "&q ...

  9. Hibernate三大类查询总结

    Hibernate目前总共分为三大类查询:cretiria,hql,本地sql [以下篇章搜集于网络,感谢作者] 第一:关于cretiria的查询 具有一个直观的.可扩展的条件查询API是Hibern ...

  10. iOS设置状态栏样式

    iOS设置状态栏样式可以使用两种方式. 方式一: 直接在需要改变默认状态栏样式的控制器中实现一个方法(其他任何事情都不用做): // 返回状态栏的样式 - (UIStatusBarStyle)pref ...