2016-02-09 1 views
1

Je développe une application web avec angulaire et cela sera utilisé pour différents clients. Chaque client a ses propres besoins (fonctionnalité spécifique) et son style (css). Beaucoup de fonctionnalités sont partagées.Angulaire: contenu différent et mise en page basée sur le client

Ce que je cherche est une solution totale pour garder ce projet propre et maintenable. Le code sera exécuté sur le serveur local de chaque client et les clients ne devraient pas voir le code spécifique pour les autres clients (en d'autres termes, quelque chose comme grunt aurait dû filtrer le déploiement).

Ce que j'avais à l'esprit:

  • Définir différentes tâches grognement à regarder, construire, etc par client
  • Définir les contrôleurs de parents (~ d'héritage) et les vues des parents pour partager les fonctionnalités
  • Utilisez un sous-dossier pour chaque client
    • Vues:
      • app/views/general/home.html (charges main.tpl.html)
      • app/views/customer1/main.tpl.html
      • app/views/CLIENT2/main.tpl .html
    • par exemple contrôleurs:
      • app/scripts/régulateurs/Général/...
      • app/scripts/régulateurs/customer1/... (général) étend les contrôleurs
    • par exemple
        css
      • app/styles/général/...
      • app/styles/Customer1/...

Grunt sélectionnera uniquement les fichiers pertinents pour le client et devrait supprimer les chemins liés au client. (par exemple à la fois app/views/customer1/et app/views/customer2/devrait aller à app/views/client, qui est chargé par app/views/general/home.html)

Un gros inconvénient sera que le app/views/general/home.html aura une référence au fichier inexistant en cours de développement. La même chose vaut pour index.html où j'ai besoin d'inclure les contrôleurs du dossier dist cible, pas de la structure du dossier du projet (en cours de développement). Ce qui rend tout un peu moins lisible et logique.

Pensez-vous que c'est une bonne approche? Y a-t-il des optimisations ou des alternatives qui vous viennent à l'esprit? Connaissez-vous des modules de grognement ou des modules angulaires aidant à cette configuration?

Merci d'avance!

Répondre

0

Une approche que vous pourriez utiliser est d'exécuter un serveur de base de nœud qui va stocker et servir, en utilisant un appel de repos, les préférences de l'utilisateur. Ainsi, vous pouvez enregistrer les paramètres spécifiques à l'utilisateur tels que la mise en page, etc. et les mettre à jour dans un simple fichier JSON stocké sur un serveur de noeud local ou distant.

+0

Cela nécessiterait d'avoir tous les contrôleurs/pages html/classes css pour chaque client disponible sur chacun des serveurs du client, ce qui n'est pas autorisé dans notre cas. Je pourrais utiliser un fichier de configuration, mais j'aurais besoin d'une solution pour les contrôleurs, html et css de toute façon. –

+0

Il s'agirait simplement d'un modèle qui définit certains paramètres spécifiques au client. Ensuite, en fonction de ces paramètres, vous affichez un ensemble donné de modèles, etc. N'acceptez pas de version personnalisée pour chaque base de clients. –