2016-08-01 86 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

相关问题