2016-08-01 85 views
1

我們正在開發帶有角度js的單頁web應用程序。我們的問題是當我們瀏覽不同的URL時,越來越多的java腳本被添加到瀏覽器內存中,因此使應用程序逐漸變慢。是否有任何方法在應用程序的規模增加時提高此類單頁應用程序的性能?單頁應用程序性能問題

+1

嘗試使用Angular的ui路由器進行路由。 –

+0

你可以捆綁JavaScript。它實際上每次都會減少http調用。請參閱[鏈接](http://stackoverflow.com/questions/12804955/what-is-the-benefit-of-asp-net-bundling-and-minification-in-runtime) – tamil

回答

0

您應該包括所有的JavaScript文件合併成一個文件,以減少網絡I/O。有工具可以做到這一點,只是谷歌「JavaScript concat」。

你可以再走一步,縮小/醜化你的JavaScript。

將您的JavaScript文件添加到主要的index.html文件。您不應該在您的意見中重新加載它。

如果您仍然遇到性能問題,那麼手頭上存在更大的問題。

0

檢查內存泄漏:

  • 刪除$ rootScope聽衆,$超時,$區間,對指令或控制器摧毀$手錶。
  • 刪除指令destroy上的事件偵聽器。

如果真的很慢,請嘗試使用較少的手錶,使用一次性綁定,使用ng-repeat進行追蹤。但是,如果你有內存問題,你將不得不跟蹤增加它的內容。

如果你想輕鬆的性能提升,不要忘了在你的應用程序配置添加此,當你在生產去:

$compileProvider.debugInfoEnabled(false); 
1

最好的辦法是,只有當你需要的是加載您的js文件。延遲加載是該方法。最初只加載主js文件和,然後再轉到另一個url,lazy load所需的js文件

oc.lazyLoad是您的問題的一個很好的解決方案。

下載oc.lazyLoad並注入是依賴於你的應用程式,例如

var myApp = angular.module("MyApp", ["oc.lazyLoad"]);

,你有一個名爲testModule.js一個js文件,你知道哪裏是使用該文件。所以前轉到該URL,加載JS文件一樣

myApp.controller("MyCtrl", function($ocLazyLoad) { 
    $ocLazyLoad.load('testModule.js'); 
}); 

更加清晰和信息Read here

相關問題