Il existe actuellement plusieurs approches pour créer des applications Web:
Il s'agit d'une approche classique où vous affichez des pages sur le serveur par un framework web comme Ruby on Rails, Django, Express, Play! Framework et etc.
Workflow typique : Construisez toutes vos logiques métier, modèles et modèles d'affichage sur le serveur dans le cadre de votre choix.
Il n'y a pas si longtemps, la communauté Web dans son ensemble a commencé à créer des applications côté client dans Angular, Backbone, Ember et quelques dizaines d'autres frameworks JavaScript MV *. Et maintenant, nous avons également React.js rejoindre le parti.
[~ # ~] mise à jour [~ # ~] : Il n'y a aucun malentendu. Ce que je voulais dire uniquement côté client, c'est une séparation complète des préoccupations. Vous avez un REST serveur API et une application côté client qui communique avec ce serveur. Selon votre cas d'utilisation, il est probable que vous n'aurez jamais une véritable application côté client uniquement qui ne fonctionne pas) t connectez-vous à un serveur principal pour l'authentification ou la persistance des données.
Workflow typique : Passez des heures à décider de Angular vs Backbone vs Ember vs X . Ensuite, vous créez vos routes, modèles, vues, contrôleurs sur le client. Une fois que vous avez terminé, créez maintenant des modèles, des contrôleurs, des routes sur le serveur. D'une certaine manière, vous effectuez une double tâche.
Je ne sais pas grand-chose sur l'utilisation de cette approche, mais si je devais deviner, vous restituez vos vues (Vue du framework MVC) sur le serveur. En conséquence, vous bénéficiez d'un support SEO et de chargements de page plus rapides.
Sur le hybride il y a le rendu d'Airbnb qui combine soi-disant backbone et express ensemble.
Eric Florenzo a posté sur son blog aujourd'hui: React: Enfin, une super pile web serveur/client .
La quantité de façons de créer des applications Web est tout simplement écrasante. Et pour quelqu'un qui apprend le développement Web, cela peut devenir un problème. Comment décide-t-on de l'approche à utiliser pour construire sa prochaine application?
Je pense que vous avez totalement mal compris le "côté client uniquement".
Tout d'abord, il doit être étiqueté "Client Centric". Tout ce point de frameworks comme Angular est que les parties "VC" de MVC sont implémentées entièrement dans le navigateur en Javascript. La logique de niveau supérieur "M" de la partie "M" - la Modèle - sont implémentés dans le navigateur et la logique "CRUD" de niveau inférieur est implémentée sur le serveur.
La logique métier est développée une seule fois. La logique de vue est développée une fois. La logique de contrôle est développée une fois pour toutes dans le cadre Javascript de choix. La logique d'accès aux données n'est également développée qu'une seule fois mais cette fois sur le framework RESTy ou SOAPy que vous choisissez côté serveur.
Dans les cas extrêmes, vous pouvez implémenter le modèle entièrement dans le client, s'il est acceptable d'accéder aux données à partir d'un seul navigateur sur une seule machine, et de mettre les données à la poubelle à chaque fois que l'option "Effacer les cookies" est sélectionnée.
La réponse à la question est que cela dépend des exigences. Un regard au moins superficiel sur l'histoire du développement "web" indique en quelque sorte une culture cowboy où parler aux parties prenantes, aux clients, à la collecte des exigences, est souvent négligé.
J'ai eu la chance d'assister à une conférence il y a quelques années où j'ai entendu quelque chose qui m'a vraiment marqué: "vous choisissez le design pour répondre aux exigences, pas les exigences pour répondre au design". Donc, face à une question comme celle-ci, vous devez trouver ce dont les personnes qui vous demandent de créer ce logiciel ont réellement besoin.
Votre travail consiste à expliquer les avantages et les inconvénients de chaque approche.
Je pense que l'un des points clés des nouvelles approches et cadres est qu'il y a moins de couplage entre les technologies frontales et les technologies back end.
L'idée est que vous pouvez utiliser n'importe quelle infrastructure sur le client et extraire des données et/ou des vues de n'importe quel nombre de sources indépendamment de l'infrastructure côté serveur.
Cela nous permet de choisir les meilleurs outils pour faire le travail et nos choix peuvent évoluer indépendamment.
Certes, je n'ai pas utilisé Angular ou Backbone donc je ne peux pas faire de recommandations expérimentées. Ma pile de base actuelle se compose du mvc côté serveur le plus mince ou des services reposants que je puisse trouver. Fournissant principalement des modèles et des données Les données sont restituées et/ou les données ultérieures récupérées côté client à l'aide principalement de javascript, jquery et css.
Je commence ici et je m'appuie sur ce dont j'avais besoin. Les avantages de cette approche sont évidents lorsque vous envisagez de prendre en charge plusieurs plates-formes clientes - navigateur, mobile, etc. Si vous avez besoin d'un rendu spécifique au client, vous ne devriez pas avoir à effectuer de modifications massives côté serveur.