面试必背系列-Pixso 单机客户端

240 阅读3分钟

背景:海康威视与我们公司合作,提出了一个业务场景,就是在监狱里面,假如没有网络情况下如何做在线编辑。

任务:基于这个需求出发,我们公司拓展业务渠道指派我去调研单机客户端的实现方案,并最终落地。

行为:接到这个任务,我首先基于几点考虑,1.技术选型,2.低耦合主应用 3.区分单机版与在线版客户端区别 4.尽可能小的减少ui层组件污染 5、数据存储 6、模拟http请求。针对技术选型,考虑快捷开发,而且减少前端学习成本,采用electron技术开发,electron技术优点:跨平台,能够打包win、mac、linux,兼容性好能够与web大部分技术兼容,方便迁移和,易于开发,社区活跃等,缺点:性能问题,这也是electron被一大诟病,这个可以做部分优化。因为在主应用要有开发,所以避免尽可能影响到主应用,所以单独弄一个模块,专门服务于单机客户端,因为都是electron桌面端,所以通过单机版的额外传参区分于客户端,单机版界面是整块阉割版的pixso在线web端,只是把里面的网络功能移除掉,在组件阉割方面,通过自定义指令去控制显示与隐藏,数据存储分为两部分,一部分是kivi数据,也就是编辑器本身数据,分两部分需要存储在pixso文件当中,另一部分像文件唯一标识fileKey,存储路径是存在本地数据库当中,采用lowDB,模拟http请求,采用请求拦截,请求桌面端的http请求。

结果:海康威视成功交付!

桌面端性能优化:几个方面,1.用户体验优化,比如:懒加载,骨架屏 2.桌面端内部性能优化:预加载进程池,不同架构系统导致卡顿,主进程阻塞 3.打包优化,采用不同打包方式缩减打包体积 4.源码优化,自主研发构建electron打包,并进行二次开发裁剪,设计合理的electron升级方案,规划是能在源码上进行二次开发,实现功能优化 5.性能监控,自动化测试 + 性能指标,自动化测试对比不同平台的各个时间、性能指标包括主进程使用内存,打开设计文件内存,打开文档所耗时间、打开桌面端登录所需时间等等

主应用pixso编辑器流程:打开文档,鉴权, 下载wasm文件,连接socket,下发文档数据,c++渲染文档

性能优化:这里,在vue3中,例如组件渲染,patch执行,watch监听触发一系列的函数执行callWithErrorHandling都会被这个函数给封装,所以我们只需要统计这个函数执行时间即可,定位到那些组件的耗时,然后进行优化

指标:性能指标现在全部跟fps挂钩,如果离满帧差太多的话,我就会去优化