Explain lazy loading in AngularJS and strategies for implementing it effectively.

Lazy loading delays module loading until needed, improving performance by reducing initial load time. Using libraries like ocLazyLoad or route-based lazy loading are effective strategies, ensuring only required modules load, speeding up single-page application initialization.

$routeProvider.when('/lazy', {
  templateUrl: 'lazy.html',
  resolve: {
    load: function($ocLazyLoad) {
      return $ocLazyLoad.load('lazyModule.js');
    }
  }
});