J'ai une application avec une mise en page complexe où l'utilisateur peut placer (glisser/déposer) des widgets (en choisissant parmi un ensemble prédéfini de plus de 100 widgets) où chaque widget est une implémentation personnalisée qui affiche un ensemble de données (récupérées par appel REST) d'une manière spécifique. J'ai lu des tonnes d'articles de blog, de questions sur stackoverflow et la documentation officielle d'AngularJS, mais je n'arrive pas à comprendre comment je dois concevoir mon application pour répondre à ces exigences. En regardant les applications de démonstration, il y a un seul module (ng-app) et lors de sa construction dans le fichier .js les modules dépendants sont déclarés comme ses dépendances, cependant j'ai un grand ensemble de widgets et d'une certaine manière il n'est pas conseillé de les décrire tous ici. J'ai besoin de suggestions pour les questions suivantes :
- Comment dois-je concevoir mon application et mes widgets ? Dois-je avoir un module AngularJS distinct ou chaque widget doit-il être une directive du module principal ?
- Si je conçois mes widgets sous forme de directives, existe-t-il un moyen de définir une dépendance à l'intérieur d'une directive ? Par exemple, pour dire que ma directive utilise ng-calender dans son implémentation ?
- Si je conçois chaque widget comme un module distinct, existe-t-il un moyen d'ajouter dynamiquement le module widget comme une dépendance du module principal ?
- Comment dois-je concevoir les contrôleurs - un contrôleur par widget probablement ?
- Comment dois-je séparer l'état (portée) si j'ai plusieurs widgets du même type dans la vue ?
- Existe-t-il de bonnes pratiques pour concevoir des widgets réutilisables avec AngularJS ?
EDIT
Références utiles :
- Chargement paresseux dans AngularJS
- Chargement dynamique des contrôleurs et des vues avec AngularJS et RequireJS
- Chargement des composants AngularJS avec RequireJS après l'application Bootstrap
- Projet de démonstration sur le chargement paresseux des ressources AngularJS sur GitHub
- Projet de charge à la demande
- Injection dynamique du module uniquement si nécessaire
- Un autre article sur le chargement paresseux en Angular
- Organisation du code dans les grandes applications AngularJS et JavaScript
- Injection de dépendances d'AngularJS et RequireJS