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
- 下一篇: 【C++ 第七章 个人银行账户管理程序案