Fork me on GitHub

qap最佳实战_跨页面需求

qap最佳实战_跨页面需求

背景

有些需求涉及到多个页面,比如续费页面涉及到商品详情页、商品列表页、首页等等。

最简单粗暴的做法是把续费页面抽离成一个单独的组件,然后在每个页面都引入。这里会重复打包,会使得包大小变大。为什么会重复打包之前一系列已经说过原因了。

利用统一入口

利用之前的统一入口, 将重复的需求写到统一入口页面, 在其它页面通过事件触发。

问题

这样会有个严重的问题,qap的页面是相互叠加的,新打开的页面会覆盖在之前的页面里面,这就导致在公共入口的需求无法看到。同时由于在统一入口里面加了需求代码,会增加统一入口代码量,首屏会收到影响。

nativeDialog

文档

Native 端开启一个新的窗口,具有独立 Instance,运行独立代码。

文档里面只是说了些具体的使用,在实践之后,其能够盖住所有的qap页面,甚至能盖住旺旺聊天的窗口。所里利用这个特性能够满足多页需求,只需要打包一份组件代码,而且不会增加统一入口体积。

具体实现

  1. 在入口页面监听事件用于打开需求的页面
  2. 在具体页面触发这个全局事件就可以了

问题?

既然nativeDialog是能够独立打开一个页面,是不是就可以不需要统一入口,直接在具体页面里面使用?

在一般情况下,这样是可以的,但是需求是不可想象的。

缺点

nativeDialog并不完美,是相互覆盖。也就是说当前存在nativeDialog的时候,再次通过nativeDialog弹出一个弹框的时候,是会把之前的弹框给覆盖了。也就是说如果出现2次多页面的弹框,就会相互覆盖。

改造

所以需要在统一入口,简单构建一个nativeDialog使用队列,依次排队使用。

总结

通过nativeDialog巧妙的使用,来解决跨多页面的需求,避免重复引用,控制整个应用包的大小。

qap实践系列

  1. qap-包大小优化
  2. qap-统一入口
  3. qap-图表
  4. qap-跨页面需求
  5. qap-动态代码

相关内容

https://github.com/amfe/article/issues/18

本文地址 http://xiaoqiang730730.github.io/2018/03/18/qap最佳实战_跨页面需求/

觉得有点意思,打个赏鼓励博主继续写哈!がんばって
前端-小强 WeChat Pay

微信打赏

前端-小强 Alipay

支付宝打赏