232 votes

En comparant Haskell ' cadres de web Snap et Yesod s

Les deux Haskell frameworks web dans les nouvelles récemment sont Yesod (0,8) et Snap (à 0.4).

Il est bien évident que Yessod prend actuellement en charge beaucoup plus de fonctionnalités que composant logiciel Enfichable. Cependant, je ne supporte pas la syntaxe de Yesod utilise pour ses HTML, CSS et Javascript.

Donc, j'aimerais comprendre ce que j'avais manquer si je suis allé avec le composant logiciel Enfichable à la place. Par exemple, ne ressemble pas à la base de données il y a du soutien. Comment sur les sessions? D'autres fonctionnalités?

237voto

mightybyte Points 5369

La divulgation complète: je suis l'un des développeurs de logiciel Enfichable.

Tout d'abord, nous allons parler de ce composant logiciel Enfichable. Maintenant le composant logiciel Enfichable de l'équipe maintient cinq différents projets sur le hackage: snap-core, snap-serveur, hold-up, d'ancrage et de xmlhtml. snap-serveur est un serveur web qui expose l'API défini par le snap-core. hold-up est un système de template. xmlhtml est un XML/HTML analyse et de la bibliothèque de rendu utilisé par les hold-up. le magnétisme est un projet cadre qui colle tous ensemble et fournit le puissant snaplets API web apps modulable et modulaire.

Yesod a une multitude de projets sur le hackage. La plupart (tous?) d'entre eux sont répertoriés dans le Yessod de la catégorie. Certains notables sont yesod-core, de la chaîne, persistante, et hamlet.

La réalité de Haskell développement web est qu'il est beaucoup moins d'un ou-exclusif choix que semble être perçue. En général, les projets sont très faiblement couplés et assez interchangeables. Vous pouvez construire un site web à l'aide de la courbure (le Yessod de l'équipe de serveur web), hold-up (le composant logiciel Enfichable de l'équipe système de template), et de l'acide-état (le Happstack projet du système de persistance). Vous pouvez également utiliser un composant logiciel enfichable serveur avec hamlet ou persistants.

Cela dit, les deux projets ont certainement quelques différences. La plus grande différence, je peux objectivement, c'est que Yessod projets généralement de faire un usage intensif de Modèle de Haskell et quasiquoting pour créer concis DSLs, tout en composant logiciel Enfichable projets en tenir à la construction du combinator bibliothèques qui sont en faveur de la composabilité. Juste au sujet de toutes les autres différences, que je pense va être subjectivement biaisée en faveur de la Snap. Le parapluie paquets nommé d'après les deux projets vont évidemment faire des choix spécifiques pour les composants mentionnés ci-dessus, et ces choix seront reflétées dans les dépendances du projet. Mais cela ne signifie pas encore que vous ne pouvez pas tirer en quelque chose de différent et de l'utiliser ainsi.

Composant logiciel enfichable n'ont séances et d'authentification, les interfaces de plusieurs bases de données, et de belle forme de manipulation (ici et ici) à l'aide de digestif-foncteurs qui comprend préemballés soutien arbitrairement imbriqués de façon dynamique importante listes. Ces sont quelques-unes de la croissance de l'écosystème de enfichables snaplets. Les sessions d'authentification et de snaplets sont écrits d'une manière qui est de retour à la fin de l'agnostique. Donc, avec une petite quantité de colle de code que vous devez être en mesure de l'utiliser avec n'importe quel système de persistance que vous pouvez penser. Dans l'avenir, Snap coller avec cette politique, aussi souvent que possible.

Pour la plupart, je pense que le choix de Snap vs Yesod vs Happstack est moins une question de fonctionnalités et plus de goût personnel. Chaque fois que quelqu'un dit que l'un des cadres n'a pas quelque chose que l'autre a, la plupart du temps, il sera assez facile de tirer dans la fonctionnalité manquante de l'autre cadre par l'importation du package nécessaires.

EDIT: Pour une comparaison plus détaillée des trois grands Haskell frameworks web découvrez mon récent billet de blog. Pour une plus rugueux (mais peut-être plus utile), de la comparaison à l'aide de quelques larges généralisations, voir mon Haskell Framework Web Matrice de Comparaison

224voto

Michael Snoyman Points 14888

Fair warning: je suis le développeur principal de Yesod.

Je ne suis pas sûr de ce que vous ne aimez pas à propos de la syntaxe Javascript: il est clair javascript avec interpolation de variable. Comme pour le CSS Yesod a maintenant Lucius qui vous permet également d'utiliser du CSS. Pour le HTML, vous pouvez facilement utiliser n'importe quelle autre bibliothèque que vous voulez, y compris des hold-up (ce composant logiciel Enfichable utilise). Cela dit, c'est un peu une drôle de chose à ignorer Yesod au cours CSS/Javascript, lorsque le Magnétisme n'a même pas d' avoir une syntaxe pour elle. Vous êtes bien sûr les bienvenus pour leur solution de juste les fichiers statiques.

Yesod est livré avec un soutien continu pour l'authentification/autorisation, type-safe Url, widgets, e-mail, et un tas de petites choses sur la place de la chapelure, des messages, destination finale). De Plus, Yessod est assez riche ensemble de packages supplémentaires pour des choses comme les commentaires et les démarques, et quelques grands dans le monde réel des bases de code à choisir au pour des exemples. Si l'un de ces attrayant pour vous, vous pouvez vérifier si vos solutions de rechange les prend en charge.

29voto

Greg Weber Points 918

Donner hameau un essai-vous pourriez finir par l’aimer. Une réaction négative à un niveau superficiel n’est pas rare. Cependant, personne qui a effectivement utilisé hameau se plaint.

Aussi, pourquoi ne pas utiliser Happstack ? Juste parce qu’ils ne sont pas « dans les nouvelles » ne signifie pas qu’ils n’ont pas un cadre solide.

12voto

Vagif Verdi Points 2380

Vous avez probablement référence à l'ancienne version de yesod. Dernière yesod versions ont plaine syntaxe de html, javascript et css.

La syntaxe html de yesod du modèle de la bibliothèque hameau de la plaine html complet d'ouverture et de fermeture des balises et les attributs html. Oui, vous pouvez omettre les balises de fermeture et d'utiliser des raccourcis pour les attributs id et class. Mais vous n'avez pas à. Vous pouvez continuer à écrire du html.

Non seulement cela, mais les modèles html peut résider dans des fichiers séparés, tout comme dans le composant logiciel Enfichable de la bibliothèque de modèles de hold-up.

Java script modèles (jules) sont de simples fichiers javascript, également résidant dans des fichiers séparés.

Le modèle css, en effet, ont une syntaxe différente, mais les dernières version de yesod maintenant fournit également la plaine de la syntaxe css.

Si vous allez avec des hold-up, vous n'aurez pas sécurisée de type url.

Dans le hold-up des modèles html sont lues à partir du disque dur à chaque fois. Yesod compile tous les modèles directement dans l'exécutable. Aucun fichier n'est lu à partir du disque dur. Donc la réponse est beaucoup plus rapide. Vous pouvez voir les points de repère vous-même.

Dans Yessod vous pouvez créer des widgets qui coopèrent bien. Composant logiciel enfichable ne traite pas avec des widgets. Vous devrez faire vos propres.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X