怎么提高AngularJS的性能

這篇文章主要介紹“怎么提高AngularJS的性能”,在日常操作中,相信很多人在怎么提高AngularJS的性能問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”怎么提高AngularJS的性能”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!

讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項目有:域名與空間、網(wǎng)站空間、營銷軟件、網(wǎng)站建設(shè)、海東網(wǎng)站維護、網(wǎng)站推廣。


AngularJS是當今應(yīng)用最廣泛的Web應(yīng)用程序框架,并且它的受歡迎程序在其期待已久的AngularJS 4.0到來之后不斷上升。但是我們可以看到,幾乎所有的Angular專家仍然在努力解決與AngularJS性能相關(guān)的各種問題,盡管它自己也做了很多的優(yōu)化。

今天,在線業(yè)務(wù)受網(wǎng)絡(luò)技術(shù)性能的影響很大。因此,有必要研究一下影響業(yè)務(wù)發(fā)展的所有因素。

不正確地使用AngularJS有可能會限制應(yīng)用程序在市場上的表現(xiàn),因此,AngularJS性能優(yōu)化成為每個AngularJS開發(fā)專家的重要責(zé)任。這就是為什么我們要在這個博客中列出提高AngularJS性能的九種方法。

最近,巴西計算機科學(xué)家進行了一項調(diào)查,他們發(fā)現(xiàn)了導(dǎo)致性能問題的一些有趣的事實。這項調(diào)查并沒有提到有關(guān)AngularJS在現(xiàn)實世界中如何運行的太多的信息,但是基于這項調(diào)查的研究為此提供了一些證據(jù)。

調(diào)查結(jié)果如下:

怎么提高AngularJS的性能
  • 有45%的人表示是源代碼的問題影響了性能。

  • 只有8%的人承認對實際做了修改。

  • 有些受訪者指責(zé)AngularJS的架構(gòu)有問題。

  • 其中有些人指責(zé)不必要的雙向綁定影響了性能。

在對AngularJS的性能進行了大量討論之后,現(xiàn)在是時候看看這九種可以提高AngularJS性能的方法了。

AngularJS的性能可以通過digest cycle測量出來。digest cycle可以認為是一個循環(huán)。在這個循環(huán)中,Angular將檢查所有的$scopes監(jiān)視的每一個變量是否發(fā)生改變。如果$scope.myVar在控制器中定義并被標記為監(jiān)視,則Angular將在每個循環(huán)中監(jiān)視myVar是否發(fā)生改變。

使用Batarang工具來評估監(jiān)視器

Batarang是由Angular團隊推出的一個偉大的開發(fā)工具,它可以減輕你調(diào)試的工作量。它包含了許多新功能,其中一些功能可以幫助你描述和跟蹤AngularJS運行的性能。此外,在內(nèi)存占用出現(xiàn)增長時,監(jiān)視樹能夠確定哪些scope沒有被銷毀。

原生JavaScript或Lodash的使用

Lodash通過重寫一些基本邏輯來提高應(yīng)用程序的性能,而不是依靠AngularJS內(nèi)置方法。如果你的應(yīng)用程序中沒有包含Lodash,那么你可能需要使用原生JavaScript來重寫所有內(nèi)容。

用Chrome的開發(fā)者工具Profiler來找出性能瓶頸

這是一個很方便的工具,它可以讓你選擇要創(chuàng)建的概要的類型。它通過記錄內(nèi)存分配時間線、內(nèi)存分配概要和堆快照等手段來對內(nèi)存進行分析。經(jīng)過這一輪的性能優(yōu)化之后,你的應(yīng)用可以在兩秒鐘之內(nèi)完全呈現(xiàn)出來,然后用戶就可以隨意與之交互了。

減少監(jiān)視者

AngularJS完全是圍繞著digest cycle來運行的。每當digest cycle觸發(fā)時,它將循環(huán)遍歷每個綁定以檢測模型是否發(fā)生了改變。通過減少監(jiān)視者的數(shù)量,可以減少每個digest cycle所花費的時間。 它還可以減少應(yīng)用程序的內(nèi)存占用。

ng-if 優(yōu)于 ng-show

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

不要使用 ng-repeat

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

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

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

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

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

去抖ng-model

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

用于開發(fā)的時間現(xiàn)在非常寶貴,因此你需要一個像AngularJS這樣的功能全面的框架來快速開展業(yè)務(wù)。


在研究了很多東西之后,我們收集整理了其他一些重要的工具可以用來增強AngularJS的性能。

下面看一下這四個AngularJS性能增強工具。

Protractor

Protractor是由Angular團隊開發(fā)的最強大的端到端Angular自動測試工具。Protractor融合了很多偉大的技術(shù),如NodeJS、Selenium、webDriver、Mocha、Cucumber和Jasmine。

怎么提高AngularJS的性能
GulpJS

GulpJS可用于自動執(zhí)行重復(fù)任務(wù)、流媒體構(gòu)建系統(tǒng),以及使用JSHint或ESLint檢查JavaScript腳本。

怎么提高AngularJS的性能
TestingWhiz

TestingWhiz是一款用戶友好的自動化測試工具,因為它具有無代碼腳本功能。 TestingWhiz提供了端到端的測試解決方案來對AngularJS應(yīng)用程序進行測試。它具有多種測試命令,可以很輕松地創(chuàng)建與AngularJS相關(guān)的測試。

怎么提高AngularJS的性能
WebdriverIO

WebdriverIO可以讓你只需通過幾行代碼就能控制瀏覽器或移動應(yīng)用程序。它的測試代碼簡單明了、易于閱讀。 集成測試運行器允許你以同步的方式編寫異步命令,這樣,你就無需關(guān)心如何來避免競爭狀態(tài)。此外,它消除了所有繁瑣的設(shè)置工作,并為你管理Selenium會話。

怎么提高AngularJS的性能
總結(jié)

正如我們所看到的,由于在Web開發(fā)中引入了很多新的JavaScript框架,Web開發(fā)的發(fā)展速度非常得快。為了從這些框架中獲得最大的收益,你必須定期進行性能優(yōu)化。

AngularJS是最強大的Web應(yīng)用構(gòu)建框架之一。通過提升AngularJS的性能,開發(fā)人員可以用更少的代碼來做更多的事情。即便是編寫出“意大利面條式代碼”的風(fēng)險也大大降低。  

到此,關(guān)于“怎么提高AngularJS的性能”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

網(wǎng)頁標題:怎么提高AngularJS的性能
網(wǎng)站路徑:http://bm7419.com/article20/pccdjo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制開發(fā)網(wǎng)站制作、微信小程序、虛擬主機網(wǎng)站策劃、外貿(mào)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站