Я видел много примеров в Интернете, показывая следующие основные AngularJS код:Неправильно ли объявлять глобальную переменную приложения в Angular?
var app = angular.module("ExampleApp", []); // setter, creates a new module
app.controller(...
и в других файлах, которые находятся под тем же угловым модулем:
var app = angular.module("ExampleApp"); // getter, retrieves the existing module
app.service(...
Это читает в память ГЛОВАЛЬНЫЙ переменная «app», доступная для других файлов. Второй файл работает, если я избавлюсь от «getter» и сразу начну с app.service(...
.
Я предполагаю, что это неправильная практика, чтобы не использовать геттер и просто использовать глобальную переменную, но мне интересно, является ли неправильная практика объявлять глобальную переменную вообще. Мои первые мысли состоят в том, чтобы обернуть каждый файл в IIFE, чтобы локально охватить переменные или избавиться от части var app
и просто соединить .controller
, .service
и т. Д. Прямо на angular.module()
.
Заранее благодарим за профессиональный совет.
Будет ли 'app.myGlobal = 'hello world'' работать не будет? – evolutionxbox
Это та же проблема, что и любая другая глобальная переменная. Да, это, безусловно, может повлиять. В производстве вы, вероятно, действительно обернули бы его в IIFE, возможно, ваша фактическая система сборки Javascript будет делать это при компиляции/упаковке вашего Javascript. – deceze
Как вы знаете, что 'var app' - глобальная переменная? Вы уверены, что он не находится внутри модуля (commonjs/ES6)? – Bergi