2011-11-22 7 views
6

Cada vez que escribo mi código HTML en Jade, obtengo espacios en blanco adicionales después del valor de cada elemento.Espacios en blanco adicionales en valores HTML procesados ​​con Jade

Por ejemplo, voy a tener una línea como esta en mi plantilla Jade:

label(for="keyword") Keyword 

Y cuando se rindió, la fuente se verá así:

<label for="keyword_1">Keyword 
      </label> 

encontramos con algunos problemas con ese espacio en blanco extra con mi CSS. Además, simplemente no se ve tan ordenado :)

¿Alguien sabe cómo puedo evitar que se inserte?

+0

Asegúrate de no tener ningún espacio en blanco después de 'Keyword' en Jade, tal vez eso pueda estar causando el problema – alessioalex

+0

Gracias, verifique dos veces para asegurarse de que no tengo ninguno, y sigo teniendo el problema . – Jon

Respuesta

10

Comprobar la actualización en la parte inferior

supongo que está utilizando express - comprobar la configuración de la aplicación.

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

Si tiene jade representación en pretty modo (pretty: true) entonces será organizar su fuente generado (etiquetas) con sangría anidada. Desactivar la impresión bonita debería resolver su problema (aunque asegúrese de no tener espacio al final, como lo señala @alessioalex).

Si tiene un motivo que le obligue a generar un bonito formato (especificación del cliente, en mi caso), puede probar algunas otras cosas. Tuve un problema similar con la etiqueta textarea; frustrante porque el espacio en blanco se inyecta realmente en el contenido de la forma. La forma en que me dieron era en torno a este incrustar un literal del html con la etiqueta de cierre:

<textarea name="someField"></textarea> 

la docs le puede dar algunos detalles más (buscar html en este caso). Está abierto issue #341 en github que sugiere un enfoque como this one for scalate, pero actualmente no funciona en jade (a partir de la versión 0.19.0).

HTH

actualización

Ok - sutil y fresco ... hay una mejor manera de mantener la salida atractiva de pretty: true y evitar la separación interior de una etiqueta (mi textarea ejemplo) .. . Sólo traté añadiendo un . al final de la etiqueta (véase el código) y sólo funcionaba ™ :-)

form(name='frmname', method='POST') 
    textarea(name='someField'). 

Renders:

<form name="frmname" method="POST"> 
    <textarea name="someField"></textarea> 
</form> 

¡Belleza!

¿Por qué funciona esto? Porque jade trata el sufijo . en la etiqueta como indicador de que la etiqueta contendrá un bloque de texto (solamente) y, a continuación, no se proporciona ningún bloque de texto, por lo que tiene como valor predeterminado '', una cadena vacía.

+0

¡Hola, gracias por el comentario! Tienes razón, desactivar el modo bonito definitivamente ayudaría, pero necesito mantenerlo habilitado en mi caso. Truco interesante con el '.', pero estoy manteniendo mis ojos en busca de algo que realmente pueda escalar. Definitivamente continuaré investigando y publicando lo que encuentre aquí. – Jon

+0

@Jon, espero que el enfoque de estilo escalado se adopte oficialmente, ya que parece una extensión lógica del sistema actual, ya veremos. TJ está ocupado en tantos proyectos ahora ... ¡ya veremos! –

+1

+1 el truco '.' funciona perfectamente para mí – greenimpala

Cuestiones relacionadas