É muito comum ver programadores fazendo uso de bibliotecas externas ao AngularJs de maneira global. Esta prática rompe as vantagens da DI – Dependency injection disponibilizada pelo modelo AngularJs, afetando vários pontos do sistema, principalmente a capacidade de testá-lo e clareza do código para leitura / entendimento.
Iremos sugerir uma das possíveis formas de encapsular em módulos que podem ser injetados estas bibliotecas globais em módulos padrões AngularJs.
Iremos exemplificar utilizando a grande biblioteca Javascript Underscore.js, responsável por simplificar códigos no padrão funcional. Para torna-la um módulo, basta:
var underscore = angular.module('underscore', []);
underscore.factory('_', function() {
//Underscore já deve ter sido carregado na página HTML
return window._;
});
var app = angular.module('app', ['underscore']);
app.controller('Ctrl', ['$scope', '_', function($scope, _) {
init = function() {
_.keys($scope);
}
init();
}]);
Eis ai uma excelente prática que em modo strict (use strict) torna-se obrigatória. Sugerimos que faça uso deste modo.




