Skip to content

Latest commit

 

History

History
49 lines (25 loc) · 3.24 KB

7.md

File metadata and controls

49 lines (25 loc) · 3.24 KB

CEF 介绍与分析

什`么是 CEF

Chromium Embedded Framework (CEF)是个基于 Google Chromium 项目的开源 Web browser 控件,支持 Windows, Linux, Mac 平台。除了提供 C/C++接口外,也有其他语言的移植版。

因为基于 Chromium,所以 CEF 支持 Webkit & Chrome 中实现的 HTML5 的特性,并且在性能上面,也比较接近 Chrome。

CEF 还提供的如下特性:自定义插件、自定义协议、自定义 JavaScript 对象和扩展;可控制的 resource loading, navigation, context menus 等等。

项目地址: https://bitbucket.org/chromiumembedded/cef

CEF 可以做什么

简单的说 CEF 就是基于 Chrominum cotent API 封装的,易于嵌入其他系统的开发框架。它能很方便的在本地应用中渲染一个 WEB 窗口,换句话说就是吧 Chromium 页面嵌入到本地应用中。当然你也可以用 CEF 开发一个你定制化的浏览器,官方的例子 cefclient 就是一个简易的浏览器了。

CEF 使用场景

现代很多应用都用到了 CEF,比如有道词典,有道云笔记,网易云音乐,WPS Office 等等。这么多经流行的经典应用都在使用 CEF 可见它的威力。

CEF 的优势就在于他的本地技术与 WEB 技术的相结合,充分发挥了各自的优势。

有道云笔记

以有道云笔记为例图中,红圈部分是 WEB 渲染的,而其他部分是本地应用开发的,可以是 MFC、QT、.Net 等等。

WEB 窗口和本地应用间是可以通信的。

CEF vs Electron

细心的童靴可能会问了,为什么需要这样的结合呢?为啥不全部使用 WEB 呢?

的确,如果你准备开发一个新应用,并且你的应用不会用到太多 Node.js 做不到的本地调用(貌似很少了)。那么我推荐你 Electron。

Electron 项目地址: https://github.com/electron/electron

这个项目就是 Node.js 和 chromium 的结合。同样发会了本地应用和 WEB 应用的优势,只不过它的本地调用都是通过 Node.js 来完成的。这样你的应用只用 JavaScript 一种语言就能完成了。

而且它最大的优势在于可以使用许多高大上的前端框架及代码库。开发效率非常高,门槛低。

这里可能有人会担心这样开发出来的系统的效率问题,特别是做惯了企业本地应用的同学。这点真的不用担心,如果你是在不放心,你可以用用vscode(这里我就不说啥是 vscode 了)体验一下。若果你真的有非常密集运算的话可以写 Node 扩展。

这里我安利一个我的个人项目 electron-nuxt electron 和 nuxt 的结合。

说了这么多感觉都在推销 Electron。那么那些场景是 Electron 不适用的呢。在我看来 CEF 的优势更多在与在已有的本地应用中增加 WEB 相关的需求。比如 WPS Office,总不会用 Electron 重写一个 wps office 吧。现在版本的 wps office 就嵌入了很多页面,大家可以去瞅瞅。

最后

写了一些自己对 CEF 的看法,后续在谈谈 CEF 使用中的一些技术细节,欢迎拍砖。