J'écris une application JavaScript côté serveur et côté client basée sur NodeJS. J'ai des contrôleurs, des modèles, des vues et des présentateurs. Le problème auquel je suis confronté est que certaines parties du code doivent être uniquement côté serveur, côté client et les deux. Par exemple, les contrôleurs sont une pure chose côté serveur pour moi, donc ils ne devraient pas être disponibles côté client. Les présentateurs, d'un autre côté, sont purement côté client et devraient donc être disponibles côté client.Comment structurer des modèles et des vues dans NodeJS?
Jetez un oeil à ma mauvaise structure actuelle:
project\
project\public\index.js
project\public\images\
project\protected\controllers\
project\protected\models\
project\protected\views\
project\protected\presenters\
Le problème est que je fais face à dossier public est la racine du document et protégé est en dehors de la racine du document. Je dois pouvoir utiliser Views du côté client et côté serveur. Donc, mes vues ne peuvent pas être protégées. La même chose s'applique aux modèles et à des tonnes d'autres choses. Je dois aussi pouvoir y accéder côté client.
Je commence à penser que je dois mettre toute la structure sous la racine du document à l'exception de certains fichiers de configuration. Est-ce ce que je devrais faire? Y a-t-il des problèmes avec cette approche? Je pose la question parce que la plupart des frameworks web (Django, Zend Framework) fonctionnent de la même façon que le framework est en dehors de la racine du document.
Merci pour vos idées. Je suppose que l'on pourrait aussi mettre les contrôleurs, les tests et le reste en public aussi longtemps que la configuration/les clés/mots de passe resteront éteints. Cela me rend plus confus si les points de vue, les modèles, les présentateurs sont en public, mais les contrôleurs sont un peu en retrait. Je sais que c'est basé sur une décision logique, mais cela semble encombré. Pensez-vous qu'il y a des inconvénients à tout mettre en public étant donné que le code est entièrement compilé dans la poubelle pour la production et que la configuration avec des clés/mots de passe potentiels est protégée? – Tower
@rFactor Il n'est pas nécessaire de placer du code côté serveur uniquement en public. Le client est open source. Le client javascript ne peut pas être caché/closed-source. Tu n'as pas le choix. Ajout de plus de détails à la structure du fichier. Et oui, les clés/mots de passe, etc ne sont pas en public. – Raynos
@Raynos - existe-t-il une raison pour laquelle vous utilisez Davis plutôt que des routeurs Backbone? – Tauren