2014-02-05 2 views
8

Я пытаюсь построить модульное приложение с помощью AngularJS. Моя первая идея состоит в том, чтобы сгруппировать каждый модуль по functionnality с такой структурой папок:Модульное приложение AngularJS: один или несколько модулей AngularJS?

/core 
    controllers.js 
    directives.js 
    app.js 
/modules 
    /users 
     controllers.js 
     directives.js 
    /invoices 
     controllers.js 
     directives.js 
    /messages   
     controllers.js 
     directives.js 
    ... 

Обратите внимание, что папка «ядро» содержит азам функции, которые всегда будут в приложении. Другие модули могут быть добавлены или удалены независимо.

Поскольку мое приложение будет большим, я также хочу использовать ленивую загрузку. Я реализовал это решение: http://ify.io/lazy-loading-in-angularjs/, который кажется мне самым простым способом. Проблема заключается в том, что он выполняет ленивую загрузку только для контроллеров, служб, директив ... но не для модулей AngularJS.

Я знаю, что есть другой способ, который позволяет ленивой нагрузке Угловые модули (http://blog.getelementsbyidea.com/load-a-module-on-demand-with-angularjs/), но я думаю, что это слишком хаки, поскольку использует основные методы Angular.

Мой вопрос: есть ли смысл в моем случае использовать различные AngularJS модули для каждого из моих модулей, например:

angular.module('core', ['ngRoute', 'users', 'invoices', 'messages']) 
angular.module('users') 
angular.module('invoices') 
angular.module('messages') 

В чем преимущество такого подхода? Являются ли модули AngularJS полезными - на данный момент - только для сторонних модулей для Angular?

Я спрашиваю об этом, так как AngularJS 2.0 будет поддерживать изначально ленивую загрузку. Miško Hevery из Google говорит: «[вы] должны группироваться по виду, поскольку в ближайшем будущем представления будут ленивы загружены», и что мы должны использовать один модуль для каждой заявки, см. Здесь: https://www.youtube.com/watch?v=ZhfUv0spHCY&t=34m19s

Правильно для большого приложения просто использовать один модуль для моего приложения, как это:

angular.module('core', ['ngRoute']); 

А потом ленивые нагрузки моих контроллеров, услуги и директивы основаны на маршрут или виде?

ответ

1

Мы имеем аналогичную структуру (в очень большом приложении) к той, которую вы предлагаете здесь, за исключением того, что не имеют контроллеров, служб и т. П., Объединенных в одиночные файлы .js. Вместо этого мы просто разделяем наши проблемы с представлениями, услугами и т. П., Все они объединены в один модуль. Таким образом, каждый значимый компонент Мощь выглядит следующим образом:

/my-component 
    - i-do-something.js 
    - a-view.html 
    - a-view-that-is-a-child.html 
    - a-view-ctrl.js 
    - index.js //the thing that creates a module and returns it 
    /tests 
     - i-do-something-spec.js 
     - a-view-ctrl-spec.js 

Это все укутаны в один модуль приложения (названный в честь нашего орг). Тогда простой загрузочный модуль angular.bootstrap(['app']) s все это. Мы используем browserify, чтобы скомпилировать все эти материалы, и до сих пор он работал хорошо.

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