Подтвердить что ты не робот

Почему ядро ​​angularjs необходимо определить, был ли создан модуль ngLocale?

В исходном коде AngularJS есть такой раздел, комментарий добавлен мной

try {
    angularModule('ngLocale'); //this detect wether ngLocale has been created
} catch (e) {
    //if not created , then create it here
    angularModule('ngLocale', []).provider('$locale', $LocaleProvider);    
}

Я понимаю, как работает ngLocale, потому что вы можете переопределить службу по умолчанию ngLocale $locale, используя такие файлы, как

<script src="../src/ngLocale/angular-locale_fr-ca.js"></script>

Но это после ядра AngularJS. Потому что исключение всегда бросает буквально, почему бы просто не удалить код обнаружения и просто использовать это вместо?

angularModule('ngLocale', []).provider('$locale', $LocaleProvider);
4b9b3361

Ответ 1

Причина этого заключается в том, что у angularjs отсутствует возможность проверить доступность модуля на изящной манере. Поэтому вместо checkModule() или findModule() инфраструктура должна вызывать "исключение загрузки модуля" для несуществующего модуля.

убедитесь, что модуль может принять параметр, чтобы сообщить системе, если он не в порядке, чтобы не найти модуль, и просто вернуть нуль.

На самом деле, чтобы имя модуля начиналось с вопросительного знака в пути кода var mod = angular.module( "? moduleName" ), а не при определении модуля, сделало бы его простым кодом oneliner, чтобы опустить исключения.