Chromium和cef的区别
为何市场上的多数浏览器基于chromium开发而不是cef。
1 Chromium和cef的区别和联系
- chromium是谷歌主导的浏览器开源项目,基于chromium可以方便快捷定制一款浏览器,国内外多数浏览器也基于此开发。
- Cef是chromium项目的一个分支,抽离webkite和内核层,提供content层上的API接口,把复杂的底层接口进行封装,更加友好的给用户使用,多数用于客户端的开发,通过内置页面实现快速开发客户端界面的效果。当前钉钉、企业微信、VSCode等多数客户端都使用此框架开发。
- 他们都可以渲染网页,都是开源框架,chromium是浏览器的开源应用,针对浏览器的常用功能做了大量工作,cef抽离渲染部分,应用在客户端的内嵌网页场景,阉割了部分功能,方便用户学习和使用。
2 浏览器能否基于cef的开发
2.1 如果能有哪些优势,有哪些问题
如果cef能满足日常的网页浏览,方便用户使用,基于此假设进行如下论证。
1、可以更加快速的上手浏览器开发,原因:cef接口隔离比较友好,提供少量API即可实现满足渲染一个页面
2、快速实现内核升级,原因:隔离比较好,cef本身会把底层内核隔离出来一套接口,把上层应用给阉割掉。
3 问题难点
如果要实现一个包含常用功能的浏览器,需要先思考如何解决如下问题。
因为cef会阉割掉大多数应用层功能如:UI、Chrome、Content等,导致当前浏览器常用功能在cef中需要自己实现。
3.1 如下技术点cef当前不支持,需要思考如何实现
1、如何实现UI框架,支持各类UI展示、右键菜单、横幅、气泡,此UI框架涉及最广,而且要求比较对性能和扩展性、开发友好等都有较高要求。
2、如何支持地址栏,实现地址栏各个功能,如联想提示、历史记录联想、搜索文字联想、收藏联想、地址栏安全标识等等
3、如何支持收藏,收藏历史、收藏搜索、收藏同步、收藏本地保存和收藏界面展示
4、如何支持开发这模式,比如:F12等各类HTML5的调试,此功能在cef可以通过开接口实现F12,cef本身支持一部分开发这模式,默认禁掉,需要重新捕获消息
5、如何支持各类内置页,页面的JS扩展接口、主页设置、各类选项设置页面,这个页面比较多几十个,是chrome浏览器功能入口
6、如何支持插件功能,插件拖进、卸载和运行等
7、如何标签的管理,标签拖拽如:标签拖出新开一个浏览器,拖进可以合并2个浏览器窗口等
8、如何实现浏览器的同步机制
9、如何实现浏览器翻译功能
10、如何实现下载模块、多窗口模块、恢复列表
11、如何实现鼠标手势、Favicon模块
12、UA功能、新标签页
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。