「技术」如何快速开发一款APP?( 三 )
然后在容器以下的这几层的话 , 我们跟原先的Native的能力做了一层打通 , 就是封装了相同的一些API接口 , 比如像网络、多媒体 , Push 。 然后容器本身是可以快速升级的 。 我们在下发的过程中 , 可以把最新的优势内核给分发到用户的手机上 , 用户可以无感知的升级它的uc内核 , 去体验最新的一些功能 。 那么在这之上 , 我们把每一个的业务叫做一个应用 。
那么我们这里面有ABCD比如说到N个业务 , 那么每一个应用都是在我们这都是一个业务级的概念 。 那么业务和业务之间是挺隔离的 , 在隔离的情况下 , 我们就可以很好的对发板和rollback做一层控制 , 这样子就能更好的控制故障的发生 。 整个H5的应用的启动流程的话 , 我们大概有分为这么好几层 。 首先的话 , 他的入口部分可以使用URL , 或者说Native的一些按钮去启动 。 那么对于我们每个H5的应用来说 , 我们都给他都给它抽象成一层叫做APP的概念 。
本文插图
在入口的地方 , 我们可以传入一些我们启动的参数 , 然后传给我们的H5的容器叫做Nebula 。 那么启动了应用之后 , 我们这里面就会有一些像框架的生命周期的回调 。 MicroAPP的话对我们来说就有 onLaunch,onStart,onStop之类的生命周期的回调 。 那么Native这一层的话 , 像Android的这边就会有一个Activity像跟Manager和Fragment之间的被调用 , 然后调用完之后就会创建一个页面 , 这个页面的话就是我们的H5的容器的页面 , 然后它会有一些像脚本加载 , 像我们内置写的一些插件的加载 , 比如说你要对于一些请求 , 对一些业务的指标做一层监控的话 , 在这边写一个插件是一个非常不错的选择 。
我们对于外部的容器做的更多的事情 , 是希望我们的Native和外部之间有畅通的通信通道 。 在这里的话 , 我们演示PPT里面讲的就是一个JS Bridge概念 。 我们Native会使用EvaluateJavascript的方式 , 把JS的代码传到外端 , web的这边会使用console的一些消息 , 把消息发回到Native这边 , 我们希望把web的体验做到一个极致 , web体验无非是几个概念 , 首先是一个首页的加载问题 , 然后是不同平台之间的差异问题 。 最后是一些离线资源的缓存的问题 , 那么在这些问题之上 , 我们提供了这么多的解决方案 。
本文插图
首先第一点 , 我们把网络请求这一块的东西 , 从WebView的那一层去提炼到我们的Native的那层 , 因为我们native对于网络有更好的一些能力 , 比如说我们可以使用除了HTTP和websocket之类的协议以外 , 做一些其他的协议的构建 , 那么同时也解决了一些跨越的问题 。 因为 APP是受我们管控的 , 所以说我们对于访问的域名也可以做一些管控 。 那么在这个基础上 , 我们就可以解决一个前后端分离的问题 。 页面资源的话可以提早的去加载 , 那么对于前端来说 , 前端只关心了他的业务数据的沟通 。
第二点的话 , 我们提供了一个差量更新的一个能力 , 差量更新的概念是什么?比如说我这次去下发了一兆的离线包 , 然后我发现以离线包里面有一些bug , 那么对它做了一个修复 , 比如说发布了一点1.0.1版本 , 那么两个离线包的改动可能非常的小 , 比如说只有一个字符串改动或者说几行代码的改动 , 这个时候就可以使用差量更新去把只有改动的部分提交到我们的MDS发布平台 , 那么MDS会在合适的时机把这一部分差量的数据量下发到我们的端上 , 那么端上根据差量就可以自动合并出一个新的离线包 。
那么 , 用户在下次打开的时候 , 你的离线包已经被更新了 , 那么这个过程既可以使得流量的使用量变得很小 , 同时又能快速的响应业务端的需求 。
推荐阅读
- 「A1canton」智慧酒店震撼来袭——虚拟现实VR篇,五大技术革新传统酒店
- 人民网@【战“疫”说理】疫情防控中如何有效实现经济复苏?
- 「北京头条客户端」科技部:将加大对前沿技术研发的攻关和支持力度
- 『财经涂鸦』三七互娱爆发的秘密:该用技术公司估值模型来看它了
- 『车家号』高低功率如何选?后期改装就能“低变高”了吗?,同一款发动机
- 手机、眼镜如何消毒?清洁要从细节做起
- 『音频』iOS如何导入百度云的音频(易剪和易剪多轨版)
- 2020年你应该关注的8大技术趋势,眺望曙光TVP线上技术闭门会纯享实录
- 十大突破性技术-NMN,叫你如何选择最好的NMN
- 妙家影视■如何计算低压开关柜铜排用量?这是我见过最漂亮的文章!
