[MODIFIER]
J'ai écrit un article sur mon blog pour expliquer les choses plus en détails:
lire sur sam-dev.net et vous pouvez maintenant lire la partie II, avec l'exemple de code.
Je vais répondre à ma propre question. Non pas parce que je pense que c'est la meilleure approche, mais juste parce que c'est celui que j'ai décidé d'aller avec.
C'est de cette façon que j'ai divisé mon entreprise modules dans des dossiers
- app
- businessModule
- les contrôleurs de
- index.js
- firstCtrl.js
- secondCtrl.js
- directives
- services
- vues
- les filtres
- anotherBusinessModule
- partagé
- app.js
- index.html
Chaque module a sa propre structure de dossiers pour les contrôleurs, directives, etc...
Chaque dossier a un index.js fichier et puis d'autres fichiers sépare chaque contrôleur, chaque directive, etc...
L'index.js fichier contient la définition du module. Par exemple pour les contrôleurs de la businessModule ci-dessus:
angular.module('myCompany.businessModule.controllers', []);
Il n'y a pas ici de dépendances, mais il pourrait y en avoir.
Puis dans firstCtrl.js, je peux réutiliser ce module et ajoutez le contrôleur à elle:
angular.module('myCompany.businessModule.controllers').controller('firstCtrl',
function(){
});
Puis le app.js les agrégats, les modules que je veux pour mon application en les ajoutant dans les dépendances de la matrice.
angular.module('myApp', ['myCompany.businessModule', 'myCompany.anotherBusinessModule']);
Le dossier partagé contient des directives et d'autres choses qui ne sont pas spécifiques à un module d'entreprise et qui peut être réutilisé n'importe où.
Encore une fois, je ne sais pas si c'est la meilleure approche, mais cela fonctionne bien pour moi. Peut-être que ça peut inspirer d'autres personnes.
MODIFIER
Comme l'index.js les fichiers contiennent des modules déclarations, ils doivent être référencés dans le code html de la page avant que toute autre application de scripts. Pour ce faire, j'ai utilisé le IBundleOrderer de ASP.NET MVC 4:
var bundle = new ScriptBundle("~/bundles/app") { Orderer = new AsIsBundleOrderer() };
bundles.Add(bundle.IncludeDirectory("~/app", "*.js", true));
public class AsIsBundleOrderer : IBundleOrderer
{
public IEnumerable<FileInfo> OrderFiles(BundleContext context, IEnumerable<FileInfo> files)
{
files = files.OrderBy(x => x.Name == "index.js" ? 0 : 1);
return files;
}
}