跨桌面端Web容器演进
作者:鲍晓鹏(汉闻) 出品:大淘宝技术
浏览器是大家所熟悉的。本文会从容器的架构演进,容器的功能增强和稳定性保障及未来的演进,这3个方面介绍一下我们的应用程序是如何对接浏览器的能力的。有问题的地方欢迎大家指正,也欢迎对浏览器内核感兴趣的同学一起探索。
此文为本系列文章第二篇,
第一篇:跨全端SDK技术演进 本文:跨桌面端之Web容器演进第三篇:跨桌面端之组件化实践
背景
随着客户端技术的逐渐发展,Web容器已经深入客户端,为客户端构建了丰富多彩的页面和交互体验,成为客户端 的一个不可或缺的重要组成部分。在千牛客户端上,Web容器不仅承载了千牛的开放容器(经历了H5插件到千牛 小程序的变革),而且一些核心功能,比如聊天窗口,消息中心,也都是由Web容器承载的。
一开始,Web容器在不同的操作系统有各自的选择,比如在Widnows上的IE内核,而在Macos用WKWebview。 但是随着Chrome的发展,渐渐的Chromium开始一统江湖。大家也开始基于开源的Chromium定制自己的内核。自己定制的内核不仅有着跨端的特性,而且能很好的支持前端的业务诉求。千牛也在此时定制了自己的web容器AEF,全称Application Embedded Framework。
容器的架构演进
Application Embedded Framework(AEF)
AEF是千牛自己是基于chromium源码定制的内核。
AEF的框架结构
概括来看AEF框架主要封装了如下功能
- 控件接口,暴露接口给PC客户端,比如支持浏览网页,前进,后退,刷新,强制刷新,中止等功能
- 事件响应,AEF上面开放了很多事件出来,供应用来决定是否处理相应的事件,比如文档加载完成,页面加载失败,资源加载失败,页面发生崩溃,标题发生刷新,url发生重定向等。
- JS和本地C++的交互,这个是通过render delegate直接向WebKit注册native sdk的dll,再通过事件发送到PC 客户端完成的。
- 丰富的扩展功能,比如定制自定义协议alires,完成本地包的加载和支持打印等功能。
带你读《2022技术人的百宝黑皮书》——跨桌面端Web容器演进(2)https://developer.aliyun.com/article/1340344?groupCode=taobaotech