+
24 Days of Hackage: blaze-html Nous avons récemment examiné le cadre d'un composant logiciel enfichable Web pour construire des applications web en Haskell, mais je n'eu tour à couvrir templating et générer HTML. Dans le post d'aujourd'hui, nous allons jeter un oeil à une approche quelque peu différente de la génération HTML qui n'utilise des modèles, mais en fait utilise Haskell lui-même. La bibliothèque blaze-html, principalement écrit par Jasper Van der Jeugt pour Google Summer of Code 2010, est une «bibliothèque combinateur HTML incroyablement rapide" pour Haskell. Cela signifie qu'il fournit une collection de primitives pour construire des documents HTML à l'intérieur du code Haskell. Aller tout droit dans un exemple, voici comment les documents cherchent généralement: Comme vous pouvez le voir, l'abstraction principale est do-notation - Html est en fait un synonyme de type pour MarkupM. qui est une instance de Monad. Cela nous permet de construire un document HTML de manière hiérarchique familière. En plus de cela, je suis en utilisant l'extension OverloadedStrings en GHC pour convertir automatiquement les chaînes littérales en Html - dactylographie. mais beaucoup plus pratique! Le H. truc est là parce que j'importer habituellement Text. Blaze5 qualifié. Non seulement l'air naturel et familier blaze-html, car il est le code Haskell et ne présente pas une énorme quantité de nouveaux types de données, beaucoup de choses que nous savons déjà immédiatement report à flamber-html aussi! Par exemple, supposons que nous voulons insérer entre les paragraphes: Maintenant, nous pouvons facilement utiliser notre combinateur pour construire des documents plus complexes: Il est exactement ce type de refactoring que nous faisons déjà dans notre code de jour en jour, alors pourquoi ne pas l'appliquer à rendre HTML aussi? Il y a malheureusement quelques inconvénients à flamber-html - notamment il n'est pas un "vrai" monade (elle viole les lois de monades), ni un transformateur de monade. Ce serait fantastique si elle était un transformateur, comme nous serions alors libres d'utiliser une monade Reader comme notre monade de base, ce qui pourrait fournir une belle abstraction pour passer autour des variables communes dans les modèles (par exemple l'utilisateur actuellement connecté). Cela ne veut pas dire que ces choses sont impossibles - vous pouvez toujours superposer Reader haut de Html. mais il devient juste un peu plus difficile à travailler. Quoi qu'il en soit, blaze-html reste mon go-to choix pour les templates de petits sites Web, parce que je dois apprendre rien de pratique, maintenant que j'ai une bonne adhérence sur Haskell! Si vous êtes en se concentrant sur l'apprentissage Haskell pendant les vacances, et que vous souhaitez voir jusqu'où vous pouvez aller sans l'apprentissage d'autres langues, je recommande fortement blaze-html. Même si vous n'êtes pas en utilisant Haskell, peut-être la possibilité de remanier vos modèles comme le code ordinaire est assez convaincant! J'accepte les dons Bitcoin: 14SsYeM3dmcUxj3cLz7JBQnhNdhg7dUiJn. Sinon, s'il vous plaît envisager de laisser un pourboire sur
No comments:
Post a Comment