¿Cómo puedo obtener Express para producir un buen formato de HTML?

Cuando uso Express for Node.js, noté que genera el código HTML sin caracteres o tabs de nueva línea. Aunque puede ser más eficiente para descargar, no es muy legible durante el desarrollo.

¿Cómo puedo obtener Express para producir un buen formato de HTML?

En tu app.js principal o lo que está en su lugar:

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 }); }); 

Puse la bonita impresión en development porque querrás más eficiencia con la production ‘fea’. Asegúrese de establecer la variable de entorno NODE_ENV=production cuando despliega en producción. Esto se puede hacer con un script sh que se utiliza en el campo ‘script’ de package.json y se ejecuta para comenzar.

Express 3 cambió esto porque:

La configuración “ver opciones” ya no es necesaria, app.locals son las variables locales fusionadas con res.render (), por lo que [app.locals.pretty = true es lo mismo que pasar res.render (view, {pretty : cierto }).

Para “formato bonito” salida html en Jade / Express:

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

Hay una opción “bonita” en Jade:

 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 consigue esto:

    
I am a foo div!

No parece ser muy sofisticado, pero por lo que busco: la capacidad de depurar realmente el HTML que producen mis vistas, está bien.

En express 4.x, agrégalo a tu app.js:

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

Si está utilizando la consola para comstackr, puede usar algo como esto:

 $ jade views/ --out html --pretty 

¿Realmente necesitas html con buen formato? Incluso si intentas producir algo que se vea bien en un editor, puede parecer extraño en otro. De acuerdo, no sé para qué necesitas el html, pero trataría de usar las herramientas de desarrollo de Chrome o Firebug para Firefox. Esas herramientas le dan una buena vista del DOM en lugar del html.

Si realmente necesitas un html bien formateado, prueba usar EJS en lugar de jade. Sin embargo, eso significa que tendrías que formatear el html.

puedes usar ordenado

tomar por ejemplo este archivo de jade:

foo.jade

 h1 MyTitle p a(class='button', href='https://stackoverflow.com/users/') show users table thead tr th Name th Email tbody - var items = [{name:'Foo',email:'foo@bar'}, {name:'Bar',email:'bar@bar'}] - each item in items tr td= item.name td= item.email 

ahora puede procesarlo con el nodo testjade.js foo.jade> output.html :

testjade.js

 var jade = require('jade'); var jadeFile = process.argv[2]; jade.renderFile(__dirname + '/' + jadeFile, options, function(err, html){ console.log(html); }); 

le dará a usted me gusta:

output.html

 My Title

MyTitle

show users

NameEmail
Foofoo@bar
Barbar@bar

luego ejecutarlo ordenado con tidy -m output.html resultará en:

output.html

     My Title     

MyTitle

show users

Name Email
Foo foo@bar
Bar bar@bar

basándose en la sugerencia de Oliver, aquí está una manera rápida y sucia de ver html embellecido

1) descargar ordenado

2) agregue esto a su .bashrc

 function tidyme() { curl $1 | tidy -indent -quiet -output tidy.html ; open -a 'google chrome' tidy.html } 

3) ejecutar

 $ tidyme localhost:3000/path 

el comando abrir solo funciona en Mac. ¡Espero que ayude!

En express 4.x, agrégalo a tu app.js:

 app.locals.pretty = app.get('env') === 'development';