qap最佳实战_跨页面需求
背景
有些需求涉及到多个页面,比如续费页面涉及到商品详情页、商品列表页、首页等等。
最简单粗暴的做法是把续费页面抽离成一个单独的组件,然后在每个页面都引入。这里会重复打包,会使得包大小变大。为什么会重复打包之前一系列已经说过原因了。
利用统一入口
利用之前的统一入口, 将重复的需求写到统一入口页面, 在其它页面通过事件触发。
问题
这样会有个严重的问题,qap的页面是相互叠加的,新打开的页面会覆盖在之前的页面里面,这就导致在公共入口的需求无法看到。同时由于在统一入口里面加了需求代码,会增加统一入口代码量,首屏会收到影响。
nativeDialog
Native 端开启一个新的窗口,具有独立 Instance,运行独立代码。
文档里面只是说了些具体的使用,在实践之后,其能够盖住所有的qap页面,甚至能盖住旺旺聊天的窗口。所里利用这个特性能够满足多页需求,只需要打包一份组件代码,而且不会增加统一入口体积。
具体实现
- 在入口页面监听事件用于打开需求的页面
- 在具体页面触发这个全局事件就可以了
问题?
既然nativeDialog是能够独立打开一个页面,是不是就可以不需要统一入口,直接在具体页面里面使用?
在一般情况下,这样是可以的,但是需求是不可想象的。
缺点
nativeDialog并不完美,是相互覆盖。也就是说当前存在nativeDialog的时候,再次通过nativeDialog弹出一个弹框的时候,是会把之前的弹框给覆盖了。也就是说如果出现2次多页面的弹框,就会相互覆盖。
改造
所以需要在统一入口,简单构建一个nativeDialog使用队列,依次排队使用。
总结
通过nativeDialog巧妙的使用,来解决跨多页面的需求,避免重复引用,控制整个应用包的大小。
qap实践系列
相关内容
https://github.com/amfe/article/issues/18
本文地址 http://xiaoqiang730730.github.io/2018/03/18/qap最佳实战_跨页面需求/