ionic入门教程第十六课-在微信中使用ionic的解决方案(按需加载加强版)
对于微信端来说,其实使用ionic是一个比较大的前端框架。
有更多比较轻量化的前端框架可以选择。
但是使用ionic有一个明显的优点就是,能够做到一端开发,三端同步上线。
这个梗说了好多遍了,但确实是这样子的,ios和安卓都能跑了,为什么在公司的微信公众号,还要再重新开发呢。
这就是我一开始研究这个解决方案的初衷。
其实在这个方向的研究目的并不是要在性能上达到一个很好的高度,而是在首页打开速度上要取得明显的时间优势。
最开始使用requestjs把所有的文件压缩打包成一个文件,这个方案在项目还很小或者说还不是很大的时候,
将多文件小文件压缩成少文件较大文件,确实较少了网络下载请求的时间同时也变相的提速了开始应用的时间。
但是当项目中加入了微信授权,这个过程会增加3秒左右的进入首页的时间。
然后当项目越做越大,被压缩后的文件越来越大,使得网络下载时间增加,
从点击链接,进入页面,开始下载文件,下载完成,进行微信授权,授权完成页面跳转回来,再加载缓存文件(可能还重新下载),最后启动项目,进入首页。
这样一个过程,像我们公司项目比较大的时候,在安卓端(以下说的时间基本上都是指在安卓手机上的时间,在ios上,只要不是网络问题,都挺快的)需要24-37秒钟。
当然这个24秒还包含了在首页加载太多的业务的关系。反正我刚接手的时候是这个时间。
一开始我的尝试优化的方案是把微信授权的文件和主体的文件分离,首先下载一个小文件,进行微信授权,授权完毕,回调回来再下载大文件。(这个过程是同事实现的。)
调整首页的业务,和产品协商有哪些业务可以从首页中移到别的页面去。
最后重构了业务逻辑代码,把跟首页无关的业务封装到独立的服务里面。(我接手的时候很多全局通用的服务都使用$rootscope实现,这里也需要提醒大家一下)
这样一套调整优化之后,同一个测试设备上,从点击链接到进去首页的时间是8-10秒。
最后甚至去掉了微信授权,先让用户进入首页,再需要用户信息的时候再进行授权,时间还是5-10秒
有了明显的优化。
但是微信3、5、8原则,不知道大家有没有听过这个原则,就是说页面打开时间在3秒5秒8秒的时候分别对应了一定的跳出率,虽然说跳出率这种东西不能完全的认为就是这个问题引起的,但不可否认的是有一定的影响因素在里面,主要是营运指标,就拿这个说事,那就不得不改了。
在经过了一阶段的重构代码,之后,并不能显著的加快启动速度。
因此我决定放弃重构,项目重做。
这次重做涉及的项目还比较多,web端,pc官网,独立活动地址,还有sdk等等项目都要考虑在内。
不止要满足现在的指标,还要满足在公司发展的道路上,web端不再是能被提到台面上的短板。
整体的前端架构设计基本上完成了,这个有需要的话,后面也会分享给大家。
首先我新建了一个ionic的tab类型的项目,放到微信中,在同一个设备上,从点击链接到进入首页的时间是3秒钟。
ionic在安卓设备的微信端真的不是很优,空白项目也要3秒钟,那我们加了这么多图片这么多请求和业务,8秒看起来也挺好了。
我是这么想的,既然小项目的启动时间会更快,那为什么不把大项目拆成若干个小项目呢?
这里我就考虑了按需加载,这个我在之前的教程中就已经有提到了,在ionic入门教程第四课-使用$controllerProvider按需加载controller
这里我说的比较简单,也只是按需加载了controller文件,只是为了作为一个技术上的演示而已。
里面还提到了requestjs技术,这里先不提。我们纯粹的来看看按需加载。
先说说简要的思路,就是在开启项目的时候,只加载首页的相关文件,然后启动项目,再切换界面的时候再去下载新的界面。
把所有的文件细分,独立压缩,减小下载的流量。
这里需要处理几个问题,或者说是技术难点,也行。。。
1、所有的文件要支持按需加载
2、文件相关性怎么实现
3、文件独立压缩
决解方案:
1、所有的文件要支持按需加载
app.controller = $controllerProvider.register; app.directive = $compileProvider.directive; app.filter = $filterProvider.register; app.factory = $provide.factory; app.service = $provide.service; app.constant = $provide.constant; app.value = $provide.value; 2、文件相关性怎么实现走配置表的形式
3、文件独立压缩
使用grunt(使用gulp好像也行,还没去研究)
有其他问题的可以关注一下公众号提问(右侧双下划线):ionic__还是那句公众号暂时没人维护。
转载于:https://www.cnblogs.com/xiaohuoni/p/7642295.html
总结
以上是生活随笔为你收集整理的ionic入门教程第十六课-在微信中使用ionic的解决方案(按需加载加强版)的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: uva 11995 I Can Gues
- 下一篇: 初学scrum及首次团队开发