Angular4--提速--提升Angular項目的首頁打開速度(包含微信登錄優化)


Angular項目的首頁打開速度很慢,有時候會有幾秒的加載時間。如果在手機端訪問的話,怕是要等待十多秒,這對用戶體驗很差。下面參考http://www.cnblogs.com/feiyu159/p/8473790.html   介紹一下我自己的Angular優化之旅。

一、靜態圖片加載:

  項目中存在很多圖片資源,有的圖片資源很大。如果和項目放在一起的話,項目啟動時既要加載項目的html,css等靜態文件,對服務器的響應互有影響。考慮把圖片單獨存放,並使用nginx做映射。當請求頁面的圖片時,css和圖片就從兩個地方加載出來。這個好像大多數大型的網站都有,譬如百度官網地址:https://www.baidu.com,如果查看項目的源代碼就會發現,百度首頁的圖片時放在baidu.com下邊的一個子域名的文件夾下。那就暫且嘗試這樣實現一下好了。

  1)創建圖片資源的服務器。

  2)配置nginx

#圖片服務器 // 這是一個單獨的Server
server {
    listen       80;
    server_name  “域名或IP”;
    location / {
        root   D:/project/images; // 服務器上圖片資源存放的位置
        autoindex on;
        }
    }

  3)設置nginx的壓縮

// 這個一般在nginx.conf中進行配置,
gzip  on;
    gzip_min_length 1k;
    gzip_buffers 4 16k;
    gzip_comp_level 2;
    gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
    gzip_vary off;
    gzip_disable "MSIE [1-6]\."

二、Angular懶加載路由

  懶加載,也就是按需加載。頁面啟動的時候,並不是將全部的component全部加載進來,否則初始化啟動會以為加載太多文件,網站訪問會超級慢。只有當訪問該模塊的時候才去加載,否則不加載。如下:

 

如上圖,只有訪問登錄(Login)模塊的時候,項目才會去加載Login模塊的component。

該項目可以參考我的一個關於angular4快速啟動項目,github地址:https://github.com/JinGangRed/angular-my-quickly-start

三、與微信網頁授權相關

微信網頁授權過程中,需要為微信提供一個redirectURL。在angular項目中的這個地方就會有個分歧,這個redirect_url是放當前頁面的地址(login)呢,還是登錄后的跳轉的地址?

其實我們可以采用后一種方式,直接賦值redirect_url為登錄后跳轉的地址。

具體實現思路是這樣的:

  1.訪問某個頁面(sell.component),添加一個路由守衛canActivate: [AuthloadService] (請忽略這個名字的含義,因為這個AuthLoad會和路由守衛的是否加載子模塊的AuthLoad產生混淆,你可以認為他是一個判斷是否激活該組件的攔截器)在AuthLoadService中,

// 如果是微信跳轉請求該組件,會攜帶上code信息,這個時候獲取code,然后將這個code返回給后台,讓后台根據這個code,去獲取AccessToken和OpenId的信息
const code = route.queryParamMap.get('code');
    if (code) {
      alert('存在code ' + code);
      this.auth.getAccessTokenByWechat(code);
      this.auth.isLoggedIn = true;
    }
    return this.checkLogin(state.url);

  2.在該路由守衛中,canActivate中 如果沒有訪問憑據的話,則設置NavigationExtras,配置參數targetURL,然后跳轉到登錄頁面。

  3.在登錄頁面上,設置網頁授權連接上的redirect_url地址為上一步驟配置的targetURL(這一步我已經實現)。

  4.其實第三步,是否真的需要?應該可以不需要登錄頁面這個組件,直接在第二個步驟中設置redirect_url為當前地址不就可以了嗎?這個我還沒實現,不敢妄下結論,待后期更新。

大家有什么關於angular項目優化的好方法,請不吝賜教

非常感謝:http://www.cnblogs.com/feiyu159/p/8473790.html 受益頗深

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM