簡體   English   中英

Angular.js和javascript管理

[英]Angular.js and javascript management

我最近使用angular進行了交易,我有一個快速問題。 我似乎無法通過搜索找到直接的答案(很可能我搜索錯了,所以請耐心等待)。

我正在構建一個相當大的單頁Web應用程序,在第一次刺入它時,我發現javascript導致了內存泄漏。 我意識到這是因為每次頁面更改(通過ajax引入的新內容)都引入了新的javascript,並且它位於獨立的dom樹中。

我正在嘗試使用角度的第二種方法(出於令人難以置信的原因-主要是它使這些應用變得容易上百萬倍。但是我想知道角度如何解決這個問題。

假設除了花哨的動畫/過渡之類的東西外,我通過角度來運行所有功能。 如果我在每個新頁面(每個頁面)上都有腳本,那么使用angular會不會遇到相同的問題? 有沒有更好的方法來處理此問題和/或管理SPA上的JavaScript使用情況?

任何方向將不勝感激,謝謝!!!

Angular絕對會有相同的問題。 甚至可能更糟,因為Angular的DOM操作為您提供了很多機會,可以通過分離的DOM來破壞內存管理。

在編寫自定義指令時,請確保使用$destroy事件來清理對DOM的所有引用。 這是我在Angular中尋找泄漏的第一件事。

$scope.$on('$destroy', function() {

  // Nullify any references that might hold onto a DOM tree.
  $someCachedElement = null;
  $someOtherThing = null;

  // Make sure you're unsubscribing from any custom services you've written that
  // might also be referencing your directive elements.
  someService.remove($scope);

  // Maybe you used a jQuery plugin on $el. Hopefully it has a destroy method.
  $el.somePlugin('destroy');
});

但總的來說,這與我為傳統SPA提供的建議相同。 與DOM交互的任何組件/模塊/類都應具有執行此類操作的拆卸項。 理想情況下,測試證明拆解總會在您期望的時候觸發。 :)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM