Kolizje modułów i przestrzeni nazw / nazw w AngularJS

Rozważ następującą jfiddlehttp://jsfiddle.net/bchapman26/9uUBU/29/

//angular.js example for factory vs service
var app = angular.module('myApp', ['module1', 'module2']);

var service1module = angular.module('module1', []);

service1module.factory('myService', function() {
    return {
        sayHello: function(text) {
            return "Service1 says \"Hello " + text + "\"";
        },
        sayGoodbye: function(text) {
            return "Service1 says \"Goodbye " + text + "\"";
        }
    };
});

var service2module = angular.module('module2', []);

service2module.factory('myService', function() {
    return {
        sayHello: function(text) {
            return "Service2 says \"Hello " + text + "\"";
        },
        sayGoodbye: function(text) {
            return "Service2 says \"Goodbye " + text + "\"";
        }
    };
});

function HelloCtrl($scope, myService) {
    $scope.fromService1 = myService.sayHello("World");
}

function GoodbyeCtrl($scope, myService) {
    $scope.fromService2 = myService.sayGoodbye("World");
}​

Mam 2 moduły (moduł1 i moduł2). Zarówno moduł1, ​​jak i moduł2 definiują usługę o nazwie myService. Wygląda na to, że tworzy ono konflikt nazw w myService w Angular, gdy oba moduły są importowane do myApp. Wygląda na to, że AngularJs używa drugiej definicji usługi bez ostrzeżenia o możliwym problemie.

Bardzo duże projekty (lub po prostu ponowne użycie modułów) grozi konfliktem nazw, co może być trudne do debugowania.

Czy istnieje sposób prefiksowania nazw nazwą modułu, aby nie występowały konflikty nazw?

questionAnswers(4)

yourAnswerToTheQuestion