168 votes

Comment puis-je faire en sorte qu'Express produise un HTML bien formaté ?

Lorsque j'utilise Express pour Node.js, j'ai remarqué qu'il produit le code HTML sans aucun caractère de nouvelle ligne ou de tabulation. Bien que cela puisse être plus efficace pour le téléchargement, ce n'est pas très lisible pendant le développement.

Comment puis-je faire en sorte qu'Express produise un HTML bien formaté ?

315voto

EhevuTov Points 6010

Dans votre principal app.js ou ce qui est à sa place :

Express 4.x

if (app.get('env') === 'development') {
  app.locals.pretty = true;
}

Express 3.x

app.configure('development', function(){
  app.use(express.errorHandler());
  app.locals.pretty = true;
});

Express 2.x

app.configure('development', function(){
  app.use(express.errorHandler());
  app.set('view options', { pretty: true });
});

J'ai mis le joli imprimé dans development parce que vous voudrez plus d'efficacité avec le "moche" en production . Assurez-vous de définir la variable d'environnement NODE_ENV=production lorsque vous déployez en production. Cela peut être fait avec un sh script que vous utilisez dans le champ 'script' de l'application package.json et exécuté pour commencer.

Express 3 modifié parce que :

Le paramètre "view options" n'est plus nécessaire, app.locals sont les variables locales fusionnées avec celles de res.render(), donc [app.locals.pretty = true est identique à passer res.render(view, { pretty : true }).

1 votes

Veuillez remplacer la réponse acceptée par celle-ci car c'est la bonne réponse à ce jour.

0 votes

Cela a fonctionné, mais j'ai dû installer un certain nombre de dépendances supplémentaires, à savoir promise , uglify-js , css y lexical-scope avant qu'il ne fonctionne à nouveau (il se construit, mais se plante à la première demande). J'ai seulement ajouté cette ligne.

2 votes

Comment faire cela dans Express 4.x ?

50voto

Jonathan Julian Points 9172

Pour "mettre en forme" la sortie html dans Jade/Express :

app.set('view options', { pretty: true });

3 votes

Excellente solution ! J'aimerais aussi que les niveaux d'indentation correspondent entre la mise en page et la page.

35 votes

Périmé. Express 3 fonctionne un peu différemment, voir le post écrit par EhevuTov.

7voto

Kevin Frost Points 316

Il existe une option "joli" dans Jade même :

var jade = require("jade");

var jade_string = [
    "!!! 5",
    "html",
    "    body",
    "        #foo  I am a foo div!"
].join("\n");

var fn = jade.compile(jade_string, { pretty: true });
console.log( fn() );

...te donne ça :

<!DOCTYPE html>
<html>
  <body>
    <div id="foo">I am a foo div!
    </div>
  </body>
</html>

Je n'ai pas l'air très sophistiqué mais pour ce que je cherche le la possibilité de déboguer le HTML que mes vues produisent - c'est très bien.

3 votes

Si le débogage du HTML est tout ce que vous recherchez, vous pouvez toujours simplement "inspecter" le HTML en utilisant l'inspecteur de Webkit ou de Firebug. Cela génère toujours un arbre DOM parfaitement formaté.

0 votes

@Roshambo vrai, mais naviguer dans l'arbre prend du temps, alors que l'on peut simplement scanner la source plus rapidement (parfois).

7voto

alarive Points 71

Dans express 4.x, ajoutez ceci à votre app.js :

if (app.get('env') === 'development') {
  app.locals.pretty = true;
}

0 votes

Cela a fonctionné ici - merci ! Dans mon cas, je n'avais pas défini la variable 'env'. Vous pouvez l'ajouter au fichier principal .js avec cette seule ligne : process.env.NODE_ENV = 'development' ;

0 votes

Pourquoi donnez-vous cette réponse si d'autres réponses donnent déjà cette solution ?

0 votes

J'ai été le premier à donner cette réponse, l'autre réponse a été mise à jour après.

0voto

Oscar Kilhed Points 1112

Avez-vous vraiment besoin d'un html joliment formaté ? Même si vous essayez de sortir quelque chose qui a l'air bien dans un éditeur, ça peut paraître bizarre dans un autre. Je ne sais pas pourquoi vous avez besoin du html, mais j'essaierais d'utiliser les outils de développement de chrome ou firebug pour Firefox. Ces outils vous donnent une bonne vue du DOM au lieu du html.

Si vous avez vraiment besoin d'un html bien formaté, essayez d'utiliser EJS au lieu de Jade. Cela signifie que vous devrez formater le code html vous-même.

0 votes

J'aime mieux ejs maintenant que j'ai travaillé avec pendant un certain temps. Je suppose que je suis juste très particulier sur certaines choses.

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