⟩ List down a few ways to improve performance in an AngularJS app?
The two officially recommended methods for production are disabling debug data and enabling strict DI mode.
The first one can be enabled through the $compileProvider:
myApp.config(function ($compileProvider) {
$compileProvider.debugInfoEnabled(false);
});
That tweak disables appending scope to elements, making scopes inaccessible from the console. The second one can be set as a directive:
<html ng-app=“myApp” ng-strict-di>
The performance gain lies in the fact that the injected modules are annotated explicitly, hence they don’t need to be discovered dynamically.
You don’t need to annotate yourself, just use some automated build tool and library for that.
Two other popular ways are:
Using one-time binding where possible. Those bindings are set, e.g. in “{{ ::someModel }}” interpolations by prefixing the model with two colons. In such a case, no watch is set and the model is ignored during digest.
Making $httpProvider use applyAsync:
myApp.config(function ($httpProvider) {
$httpProvider.useApplyAsync(true);
});
… which executes nearby digest calls just once, using a zero timeout.