CEF是什么文件,CEF英文全称

  CEF是什么文件,CEF英文全称

  Chromium Embedded Framework (CEF,Chromium Embedded Framework)是一个基于Google Chromium项目的

开源Web browser控件

,支持Windows、Linux和Mac平台。除了提供C/C接口,还有其他语言的移植版本。(铬是指铬,银白色金属)

  因为基于Chrome,CEF支持Webkit Chrome中实现的HTML5的特性,性能接近Chrome。

  CEF还提供以下功能:

自定义插件

自定义协议

自定义

JavaScript对象和扩展

;可控的资源加载、导航、上下文菜单等。

  

支持语言:

  的基本CEF框架包括对C和C编程语言的支持,但也有为其他语言提供绑定的外部项目:

  

Delphi

德尔福(CEF1)-DCEF 1(D (D表示德尔福)

  德尔福(ce F3)-DCEF 3

  德尔福(ce F3)-ce F4德尔福

  帕斯卡自由帕斯卡(CEF3) - fpCEF3

  Go Go(ce F3)ce F2 Go

  Java Java(ce F3)Java Chromium嵌入式。net.net(ce f1,ce F3)cef sharp(sharp的意思是c#)。NET(ce f1)cef glue。NET/Mono(ce F3)-Xilium。头孢胶水。NET(ce F3)ChromiumFX

  Python Python (CEF1,ce F3)——CEF Python

  Swift Swift(ce F3)cef . Swift

  谁在使用CEF?让我们通过一些实际例子来说明大家对CEF做了什么:

  

各种浏览器

  一些早期的双核浏览器(即Webkit)使用CEF作为Webkit内核浏览器控件。

  但是

对于浏览器来说,直接在Chrome上面扩展,其实才是王道,大家现在都这么做了(各种极速浏览器)。

  

Evernote Client (on Windows)

  Evernote允许用户将网页粘贴到笔记中,还提供插件将网页保存为笔记。

  必须在客户端上正确呈现页面,这个任务就交给了CEF。

  

GitHub Client (on Windows)

  GitHub还打包了libcef.dll。从性能的角度来看,用于显示项目的ReadMe页面必须是CEF,其他地方的UI也可能部分由页面实现。

  

QQ

  QQ很早以前就通过嵌入IE实现了一些功能和接口。从去年开始,QQ引入了CEF,取代了以前使用IE的一些地方,这样可以使用一些基于

Webkit

的新功能,同时可以获得速度、稳定性和兼容性方面的优势。

  

Adobe Edge Animate Adobe Edge Reflow

  Adobe推出了一整套现代网页(或HTML5?)工具,名为Edge。

  Adobe Animate,用于动画制作,可以通过编辑时间轴和创建原件(Edge Animate中称为符号)来实现复杂动画。

  边缘回流是设计响应式卷筒纸。有人翻译为响应式,其实就是适应性。

  以上两个软件基本都是面向有Webkit内核的浏览器,所以需要嵌入一个Webkit内核来提供所见即所得的预览和编辑界面。他们都用CEF。(CEF和pure Webkit的区别后面会介绍)

  

Q+

  在Web App的概念下,提供网页的运行环境(简而言之,一盒客户端和一些可用的API),支持IE和Webkit内核。

  对于Web开发学生来说,我们推出的Webkit内核(其实是CEF)不需要考虑IE的版本兼容性,不仅提高了开发效率,还利用了HTML5的一些新特性。当时Q的应用市场、消息中心、壁纸、音乐Widget等应用都是基于Webkit内核开发的。

  q项目可以说在CEF上做了更多的尝试,比如:

  HTML5的音频标签用于开发音乐小部件。

  有些应用程序使用HTML5的脱机功能(即带有清单文件的功能)。当然也有一些曲折,也获得了不少经验。

  打包的Webkit调试工具(开发工具)。

  自定义协议:比如对qplus://协议的访问可以重定向到专门的文件夹等功能。

  离屏渲染(OSR):

不规则的网页窗口

(网页的不透明区域是什么形状,窗口就是什么形状)由Windows的分层窗口进行离屏渲染。

  为什么要在客户端嵌入CEF?举了这么多例子,这个问题就好说多了:

  用于

展示Web页面

,使用各种Web服务;

  

做UI

带网页;

  使用

HTML5的特性

,如音频、画布等。包括CSS3特性等。

  屏幕外渲染(OSR):

  所谓的OSR是

不创建真窗口,将整个页面渲染到一张位图上面

。当然不仅仅是渲染,还有一系列处理鼠标键盘事件和输入法事件的API。

  当无法使用真实窗口时,例如在分层窗口上,或者在游戏中渲染到纹理时,该功能特别有用。

  使用OSR功能,可以制作一些有趣的效果,例如:

  AlloyTeam做了Webtop,其中OSR用来做浏览器,播放器等。都是网页。

  有一个Awesomium项目也支持OSR。已经有游戏项目在游戏中使用Awesomium渲染网页。(看Awesome的输出文件,应该类似于CEF的实现,是Chromium的封装。牛逼能对CEF做的也应该做。)

  我在业余时间做了一个演示,用CEF把网页渲染到OpenGL的纹理,这是在游戏中应用CEF的一个小尝试,如图:

  为什么是CEF?(CEF与其他替代产品)IE作为嵌入式浏览器控件有着悠久的历史。准确的说,现在我们有很多IE的替代品。

  CEF vs IE:

  

兼容性

:

  IE:内核随操作系统不同,版本从6到10。这些版本在Web开发中兼容性的工作量不可小觑。

  CEF:使用Webkit内核。从功能上看,一个CEF版本可以对应Chrome的一个版本号,这样Web开发就有了一个清晰的功能集,省去了考虑兼容性的工作量。

  

HTML5标准 新特性

:

  IE:当然,老版本的IE不支持最新的HTML特性和标准。

  CEF:毫无疑问,Webkit和Chrome是支持新功能的先锋。

  

开源 跨平台

:

  IE:不开源,只在Windows平台上。

  CEF:开源,使用的Webkit、Chromium都是开源的,开源意味着更多可定制的可能性;它跨越了三个平台:Windows,Mac,Linux3。

  

离屏渲染(OSR)

:

  IE:离屏渲染可以通过一些hack的方法实现,但是工作量不小,官方也不支持。

  CEF:有一个特殊的离屏渲染模式和相应的API。

  

普及率

:

  IE:所有Windows用户都有IE,这是IE的优势。(但是有些用户的IE设置不正确,会导致无法使用。例如,jscript.dll没有注册,这导致他们无法使用JavaScript。)

  CEF:你需要自己安装软件包。

  为什么Webkit故意拿CEF和Webkit做比较?

  最近看了一篇很好的文章,关于Webkit是什么,不是什么,为什么有这么多Webkit端口:《开发者需要了解的WebKit》。

  这里有一个总结:

  Webkit是网页的

解析和排布

引擎,由所有基于Webkit的浏览器共享。默认的Webkit端口是Safari,这是下载的Webkit源代码的编译版本。此外,还有其他Webkit端口,包括

Chromium, QtWebkit

,在2D绘图、GPU加速、JavaScript引擎、音视频解码等方面都有不同的实现。

  CEF vs webkit(其实也可以说是Chromium vs Webkit)

  V8引擎,skia的2D渲染,Chromium的GPU加速等。随着Chromium的出色实现,CEF也成为了一个优秀的Webkit端口。

  CEF的缺点:善良。CEF也有自己的缺点和局限,不能只提优点。在这里,我来介绍一下CEF的缺点和不足:

  

体积

:

  最新版本的CEF,所有dll的体积加起来应该接近40M,压缩后估计有10M。如果你的项目本身安装包量不大,无法接收这个量,那么CEF不适合你。

  当然这个体积对于现在G算的游戏应该还是可以接受的。

  普通的客户端项目,根据项目本身的特点需要CEF来实现,值得增加产品的安装包这么多。当然在实现上也有一些妥协,比如安装后下载(个人认为这个意义不大,毕竟安装包的用户可以选择下载软件来加速)。

  

缓存

:

  Chrome的缓存设计为

只能有一个进程读写

,CEF也是。

  对于需要多开通的客户端,目前只能是

每个进程实例指定一个不同的缓存文件夹

。但这无疑增加了硬盘占用,也使得一些已经缓存的文件被多次下载(比如进程A缓存jQuery.js,进程B因为缓存不同的目录,不得不请求缓存jQuery.js一次)。

  OSR:

  目前OSR可以用GPU加速,不像真正的窗口模式。目前OSR只能用软件渲染,也就是说不能支持一些CSS 3D效果。

  但是,OSR的特点仍在不断改善,我认为这是值得期待的。

CEF是什么文件,CEF英文全称