最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

angularjs性能優(yōu)化的方法

 更新時(shí)間:2018年09月05日 10:30:44   作者:喵先生的進(jìn)階之路  
這篇文章主要介紹了angularjs性能優(yōu)化的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

學(xué)習(xí)angularjs有一段時(shí)間了,但是一直都沒有怎么考慮過性能方面的問題,上次在研究過濾器的時(shí)候涉及到了性能問題。所以自己也總結(jié)了下常用的性能優(yōu)化。

優(yōu)化$watch

1.及時(shí)移除不必要的watch

var unWatch = $scope.$watch('', function() {
  // do something
  ...
  if (someCondition) {
    unWatch();  // 取消監(jiān)聽
  }
});

2.盡量避免深度watch

我們都知道$watch有三個(gè)參數(shù),第三個(gè)參數(shù)為true就是要深度監(jiān)聽的。這個(gè)參數(shù)主要是在嵌套對象的時(shí)候會用到,但是要盡量避免使用,如果你只是想看看基本屬性的變化,那么就不要使用第三個(gè)參數(shù)進(jìn)行深度的監(jiān)聽,這回大大拖慢每一次監(jiān)聽的時(shí)間。

3.ng-if和ng-show

盡量使用ng-if,因?yàn)榍罢卟粌H會移除DOM,還會移除相應(yīng)的watch。

而ng-show只是簡單的隱藏,但其實(shí)已經(jīng)加載完成。

ng-show指令在特定的元素上切換CSS顯示屬性,而ng-if指令實(shí)際上會先從DOM中刪除元素,如果在需要的話重新創(chuàng)建。此外,ng-switch指令是ng-if的替代方案,具有相同性能優(yōu)勢。

$apply和$digest

$apply會使angular進(jìn)入$digest循環(huán),然后從$rootScope開始遍歷,檢查變更。

$digest只會檢查當(dāng)前scope以及其子scope。

所以,但我們確定某個(gè)操作只會影響當(dāng)前的scope,使用$digest會稍微提升性能。

優(yōu)化ng-repeat

ng-repeat真是使用比較多的指令了,但是好像經(jīng)常忽略track by。

建議避免在JavaScript中使用ng-repeat來構(gòu)建HTML。對于某些應(yīng)用程序來說,使用ng-repeat會增加不必要的監(jiān)視者。使用ng-bind-html指令是解決這個(gè)問題的更好的辦法。

我們的ng-repeat經(jīng)常就這么寫:

ng-repeat="item in items"

但是如果這么寫的話,當(dāng)我們刷新頁面的時(shí)候,它會刪除所有已有的DOM,然后重新創(chuàng)建和渲染。但是如果我們加上track by就不同了:

ng-repeat="item in item track by item.id"

這樣angular就會復(fù)用已有的DOM,然后更新變化的部分。這就減少了不必要的渲染。

使用$watchCollection(包括第三個(gè)參數(shù))

通常在使用$watch的時(shí)候只會用到兩個(gè)參數(shù),但是如果加上第三個(gè)參數(shù)的話,例如`$watch('value',function(){},true)`,則可以讓Angular執(zhí)行深度檢查(檢查對象的每個(gè)屬性)。但這可能會帶來更多的性能開銷。因此,為了解決這個(gè)性能問題,Angular提供了`$watchCollection('value', function(){})`,它的第三個(gè)參數(shù)的功能與$watch的幾乎相同,只是它只檢查對象屬性的第一層,以降低性能開銷。

使用console.time來調(diào)試問題

如果你在對應(yīng)用程序努力地進(jìn)行調(diào)試,以解決性能問題的話,請使用console.time,這是一個(gè)非常棒的API。

去抖ng-model

你可以使用ng-model來去除輸入。例如,要撤銷像GOOGLE這樣的搜索輸入的話,你必須使用ng-model-options=”{debounce:250}”。由于輸入模型發(fā)生了變化,使得digest cycle每250ms觸發(fā)不超過一次。

其他優(yōu)化

console.log很耗時(shí),發(fā)布的時(shí)候一定要干掉。

慎用filter,可以在controller中預(yù)先處理。

盡量避免使用廣播事件,可以使用雙向數(shù)據(jù)綁定或者共享service等方法代替。

總結(jié)

我總結(jié)的還不是很全,都只是我常用到的。隨著更多的使用,理解也會更進(jìn)一步的加深。

參考:https://github.com/atian25/blog/issues/5

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • angularjs實(shí)現(xiàn)的前端分頁控件示例

    angularjs實(shí)現(xiàn)的前端分頁控件示例

    本篇文章主要介紹了angularjs實(shí)現(xiàn)的前端分頁控件示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-02-02
  • 淺談Angular中ngModel的$render

    淺談Angular中ngModel的$render

    下面小編就為大家?guī)硪黄獪\談Angular中ngModel的$render。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-10-10
  • AngularJS 霸道的過濾器小結(jié)

    AngularJS 霸道的過濾器小結(jié)

    本篇文章主要介紹了AngularJS 霸道的過濾器小結(jié),在實(shí)際操作中,我們需要對統(tǒng)一數(shù)據(jù)源進(jìn)行多次轉(zhuǎn)換,本文詳細(xì)討論有關(guān)過濾器的用法 。
    2017-04-04
  • 如何以Angular的姿勢打開Font-Awesome詳解

    如何以Angular的姿勢打開Font-Awesome詳解

    這篇文章主要給大家介紹了關(guān)于如何以Angular的姿勢打開Font-Awesome的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Angular具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-04-04
  • AngularJS中實(shí)現(xiàn)顯示或隱藏動(dòng)畫效果的方式總結(jié)

    AngularJS中實(shí)現(xiàn)顯示或隱藏動(dòng)畫效果的方式總結(jié)

    AngularJS 是一組用于創(chuàng)建單頁Web應(yīng)用的豐富框架,給構(gòu)建豐富交互地應(yīng)用帶來了所有功能,其中一項(xiàng)主要的特性是Angular對動(dòng)畫的支持。下面通過本文給大家介紹AngularJS中實(shí)現(xiàn)顯示或隱藏動(dòng)畫效果的方式總結(jié),對angularjs動(dòng)畫效果相關(guān)知識感興趣的朋友一起學(xué)習(xí)
    2015-12-12
  • Angularjs在初始化未完畢時(shí)出現(xiàn)閃爍問題的解決方法分析

    Angularjs在初始化未完畢時(shí)出現(xiàn)閃爍問題的解決方法分析

    這篇文章主要介紹了Angularjs在初始化未完畢時(shí)出現(xiàn)閃爍問題的解決方法,結(jié)合實(shí)例形式分析了3種常用的閃爍問題解決方法,需要的朋友可以參考下
    2016-08-08
  • 對angularJs中自定義指令replace的屬性詳解

    對angularJs中自定義指令replace的屬性詳解

    今天小編就為大家分享一篇對angularJs中自定義指令replace的屬性詳解,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • Angular.js實(shí)現(xiàn)獲取驗(yàn)證碼倒計(jì)時(shí)60秒按鈕的簡單方法

    Angular.js實(shí)現(xiàn)獲取驗(yàn)證碼倒計(jì)時(shí)60秒按鈕的簡單方法

    最近做項(xiàng)目的時(shí)候又遇到了驗(yàn)證碼倒計(jì)時(shí)的需求,發(fā)現(xiàn)這個(gè)功能還是挺實(shí)用的,所以就想著總結(jié)一下,下面這篇文章主要給大家介紹了關(guān)于利用Angular.js如何實(shí)現(xiàn)獲取驗(yàn)證碼倒計(jì)時(shí)按鈕的簡單方法,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-10-10
  • AngularJs表單驗(yàn)證實(shí)例代碼解析

    AngularJs表單驗(yàn)證實(shí)例代碼解析

    這篇文章主要介紹了AngularJs表單驗(yàn)證實(shí)例代碼解析,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-11-11
  • Angularjs中數(shù)據(jù)綁定的實(shí)例詳解

    Angularjs中數(shù)據(jù)綁定的實(shí)例詳解

    這篇文章主要介紹了Angularjs中數(shù)據(jù)綁定的實(shí)例詳解的相關(guān)資料,這里提供簡單實(shí)例,大家可以參考下,希望通過本文可以掌握這部分內(nèi)容,需要的朋友可以參考下
    2017-08-08

最新評論

霍林郭勒市| 调兵山市| 平阴县| 达拉特旗| 赤峰市| 玉溪市| 怀来县| 新巴尔虎左旗| 丽江市| 桓仁| 岳西县| 惠安县| 荥经县| 深圳市| 大足县| 镇平县| 北宁市| 高尔夫| 岢岚县| 金寨县| 天峻县| 庄浪县| 会昌县| 绍兴市| 上蔡县| 镇远县| 古田县| 兴隆县| 济源市| 玛曲县| 周至县| 丰镇市| 临潭县| 云安县| 河北区| 肥城市| 印江| 玉树县| 墨竹工卡县| 金山区| 揭东县|