Jusqu'à présent, j'ai été un grand fan du modèle MVC pour le développement d'applications Web. Pour le web, j'ai développé principalement en PHP (avec les frameworks Kohana et CodeIgniter) et Ruby (RoR).
Au fur et à mesure que mes applications s'alourdissent du côté d'Ajax (applications à page unique, etc.), j'ai remarqué que je ne peux m'empêcher de trahir les concepts très basiques de MVC: Javascript fait la plupart des travaux; appeler des contrôleurs juste pour demander des vues ou plus de code js / json semble incorrect.
Après m'être efforcé de conserver tous les travaux de routage dans les contrôleurs, je l'ai fondamentalement divisé entre eux et Javascript (c'est-à-dire, à partir du PoV du cadre, une partie des vues). Lorsque vous demandez json, la subversion MVC semble encore plus évidente: le code js faisant la requête est le contrôleur; le contrôleur du framework agit simplement comme un proxy pour les données du modèle - ce que je demande réellement.
Alors, que dois-je regarder?
Je pensais aux applications purement javascript, par exemple avec backbone.js et une base de données basée sur des documents, json-spitting (couchDB) comme backend, mais j'aime mes bases de données relationnelles.
Une autre option serait la suivante: je ferais juste des "modèles routés" en PHP / ruby / go / whatnot. Ceux-ci analyseront la demande, appelleront la base de données, redonneront du json.
Cette approche me semble intéressante mais il manque de documentation substantielle ou d'analyse académique, donc j'ai un peu peur du saut.
Des idées?
la source
Réponses:
S'il n'y a pas d'analyse académique, faites-le vous-même. Expérimentez simplement sur votre prochain projet à petite échelle et voyez comment vous l'aimez. Lisez l'essai de Paul Graham sur les raisons pour lesquelles il a choisi Lisp pour sa startup, même s'il n'était pas couramment utilisé. http://www.paulgraham.com/avg.html
Il existe de nombreux frameworks javascript MVC. Si vous souhaitez créer une application principalement javascript, faites-le.
Construisez simplement une API reposante dans des rails ou tout autre framework que vous utilisez qui n'est qu'un wrapper pour la base de données, et vous n'aurez pas à abandonner votre base de données relationnelle. Appelez simplement l'API comme vous appelleriez la base de données s'il s'agissait d'une application logique basée sur un serveur.
De plus, si vous créez votre application de cette façon, vous pouvez très facilement intégrer la prise en charge hors ligne.
la source