2016-03-29 4 views
1

Я использовалAngularJS - лучший способ написать 'angular.module'?

  1. уаг приложение = angular.module ('', []); app.controller ...

  2. angular.module ('', []). Контроллер()

  3. (функция() { вар приложение = angular.module ('', []) ; })();

и все они работают. Но я не понимаю третьего. Что это такое (function() {})();

и что лучше всего среди 3. Спасибо.

+0

Это сообщение может помочь вам http://stackoverflow.com/a/19957452/5138917 –

+0

Третья из конвенции ES6 и надеемся, что она будет лучше всего использовать. –

ответ

4

Угловое Руководство Стиль Джона папин объясняет, почему вы должны использовать # 3 - Immediately Invoked Function Expressions:

Почему ?: An IIFE удаляет переменные из глобального масштаба. Это помогает предотвратить переменные и декларации функций от жизни дольше, чем ожидается в глобальном масштабе, что также помогает избежать столкновений переменных .

Почему ?: Когда ваш код минимизирован и объединен в один файл для развертывания на производственный сервер, вы можете столкнуться с переменными и многими глобальными переменными. IIFE защищает вас от , предоставляя переменную область для каждого файла.

1

2 правильно

angular.module('', []). controller() //<- correct

var app = angular.module('', []); app.controller не рекомендуется, так как он создает глобальную переменную, «приложение», которые могут ввести в заблуждение других сценариев и в любом случае ненужный.

(function() { var app = angular.module('', []); })(); лучше, чем # 1, но это необязательно, так как закрытие предотвращает утечку var app, но оно даже не используется в его закрытии.

В основном вам нужно только закрытие function, если вы создаете экземпляр (и используя!) переменные.

Смежные вопросы