概要
大终端开发,不仅啥都能做,还啥坑都能踩。
在桌面端这个系列上文讲到:Electron BrowserView 实现多标签页效果,只是做了简单的 Demo 可行性验证,距离产品要求和技术沉淀还差了一大截。
通过本文,你将获得:
- 容器封装。
- 预加载管理。
- 加载中 Loading 实现。
- 加载失败 Error 实现。
不会获得:
- 便捷的通信机制[手动狗头]
(这个会放在跨端通信终结者|看我是如何保证多端消息一致性的的补充篇中讲)
效果
不干讲,先看看最终实现的效果:
如果用以前WebView的实现方式还是比较简单的,但官方是明确不支持这样做了Electron Web 嵌入。
那选择上还有iframe和BrowserView了,说实话,iframe实现上会简单很多,但没办法做到预加载,那整体效果上会变得差强人意。更重要的一点,由于历史遗留问题,项目中存在一套旧的通信机制,2套的机制不兼容(跨端篇再细讲),所以没办法用iframe。
细节
言归正传,讲讲BrowserView是怎么实现的。
页签实现的逻辑跟前文大差不差,所以这里略过。
容器封装
封装容器做了哪些事?
我们希望无论是用BrowserWindow还是BrowserView渲染,都是一致的参数封装。
Typescript复制代码 /**
* 唯一 ID
*/
public readonly id: number;
/**
* 加载地址
*/
private url?: string;
...
那除了一致的 UI、一致的 prelod 外,我们还希望有一致的逻辑处理