J'utilise Mako + Pylônes et je l'ai remarqué une quantité horrible d'espaces dans ma sortie HTML. P>
Comment puis-je faire pour se débarrasser de lui? Reddit parviennent à le faire. P>
5 Réponses :
Si vos données ne sont pas trop dynamiques, vous pouvez stocker un cache optimisé de la sortie de modèle et servir ceci aux clients Web. P>
Je ne comprends pas comment cela se rapporte à mon problème des espaces blancs. Pouvez-vous préciser?
Eh bien, ont Mako générer les modèles comme il le fait maintenant. Et, plutôt que d'ajouter la complexité de post-traitement de chaque demande (le plus souvent par des expressions régulières), servent une version en cache de la page une fois qu'il a été traité.
Je ne suis pas sûr de savoir s'il y a un moyen de le faire au sein de Mako, mais vous pouvez toujours faire du traitement post-rendu avant de servir la page. Par exemple, disons que vous avez le code suivant qui génère votre espace horrible: Vous pouvez ajouter une étape supplémentaire comme: p> ... où CleanUp_whitSpace () est une fonction qui fait ce que vous voulez (cela pourrait passer par HTML Tidy ou mince ou autre). Ce n'est pas le moyen le plus efficace de le faire, mais cela fait un exemple rapide :) p> p>
Il y a la truc de la barre oblique inverse.
Regardez la page d'accueil de Mako http://makoemplates.org pour un exemple . P>
<%def name="makerow(row)"> <tr> % for name in row: <td>${name}</td>\ % endfor </tr> </%def>
Le seul moyen de le faire sans post-traitement serait d'éviter les espaces dans le gabarit. Cependant, cela rendra les choses très difficiles pour vous en tant que développeur.
Vous devez prendre une décision sur la possibilité de nettoyer la chaîne HTML après que le modèle a été rendu, une bande passante suffisante permettra de compenser ce coût. Je recommande d'utiliser une bibliothèque de code C optimisée pour le faire pour vous pour vous, telle que lxml.html code>
. p>
Semblable à la réponse de Dan, j'ai passé la sortie rendue via cette fonction qui conserve uniquement le blanc "délibéré". J'ai défini cela pour être deux retours de carragile dans une rangée (c.-à-d. Une ligne vide)
SO P>
whitespace_mess = template.render(somevar="Hello \nThere") cleaned_up_output = filter_newline(whitespace_mess)