2014-11-04 3 views
4

В очень простом угловом приложении мы имеемУглового Основной порядок загрузки

<head>... 
<script src="app.js"></script> 
<script src="maincontroller.js"></script> 

приложения определяет модуль приложения, а затем контроллер висит от приложения, как app.controller («MainController ..») Если заказ из два сценария будут отменены, приложение выкинет ошибку «приложение не определено».

Есть ли способ обойти эту зависимость нагрузки? Мой страх в том, что по мере того, как он становится более сложным, я получаю зависимости порядка скриптов. И, возможно, мне захочется загрузить мои скрипты async.

спасибо.

+2

Посмотрите на https://github.com/ocombe/ocLazyLoad для загрузки модулей async. –

ответ

3

См, например, это plunker: http://plnkr.co/edit/kqVqTHxl4tc6mIV5bDbQ

Я определил SomeService в отдельном файле, svc.js. Я определил модуль и главный контроллер в app.js. И хотя значение MainController зависит от этой услуги, которая «загружается позже», зависимость вычисляется и вводится. Все, о чем вы должны беспокоиться, это: сначала введите определение модуля.


также: Не храните приложение в глобальной переменной называется app, вместо этого, используйте angular.module с именем модуля для получения ссылки на него:

angular.module('SomeModuleName').controller(...)

Любой вид глобальных переменных, как правило, не является хорошей практикой.

2

Посмотрите на использование Angular and Browserify или Angular and RequireJS. Browserify и RequireJS - это загрузчики модулей, которые позволяют сохранить 1 ссылку на скрипт в вашем index.html.

Browserify основан на этапе построения, который объединит все ваши JS в 1 файл.

RequireJS является загрузчиком асинхронного модуля (AMD), который может загружать ваши файлы асинхронно.

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