Vue: Con `espacios en blanco: condensar` todos los & nbsps ;, incluso los significativos, se convierten en espacios

Creado en 29 ene. 2020  ·  5Comentarios  ·  Fuente: vuejs/vue

Versión

2.6.11

Enlace de reproducción

https://gist.github.com/aimozg/c073eea5a55062e3dcd8f887a8567807

pasos para reproducir

Ejecute example.js en Node.

Pasos alternativos / explicación detallada:

  1. Configure el compilador de plantillas de Vue con whitespace: 'condense' . (es el predeterminado para vue-cli).
  2. Renderizar la plantilla con &nbsp; entidad, por ejemplo, <p>a&nbsp;b</p>
  3. Inspeccione la plantilla en busca de un carácter de espacio real que no se rompa

¿Lo que es esperado?

&nbsp; entidad representada como carácter de espacio que no se separa; La salida de example.js debe contener

---- whitespace: condense
// code
NBSP FOUND

¿Qué está pasando realmente?

&nbsp; entidad se representa como espacio simple, la salida de example.js contiene

---- whitespace: condense
// code
NBSP NOT FOUND

Este código de compilador elimina el espacio en blanco:

if (!inPre && whitespaceOption === 'condense') {
  // condense consecutive whitespaces into single space
  text = text.replace(whitespaceRE, ' ')
}

y "&nbsp;" s se reemplazan por "\xA0" s con el decodificador de entidad anterior.

Los problemas relacionados son https://github.com/vuejs/vue/issues/10485

Sugerencia :

Regexp de espacios en blanco más estrecho, como /[ \t\r\n]+/g .

bug compiler has PR

Comentario más útil

¿No deberíamos tocar los espacios irrompibles en general? Eso es lo que personalmente esperaría si utilizo uno en mi plantilla. También solucionaría el problema que mencionaste

Todos 5 comentarios

¿No deberíamos tocar los espacios irrompibles en general? Eso es lo que personalmente esperaría si utilizo uno en mi plantilla. También solucionaría el problema que mencionaste

Configure el compilador de plantillas de Vue con espacios en blanco: 'condensar'. (es el predeterminado para vue-cli) .

Espera, estoy confundido. ¿Es condense realmente el valor predeterminado? Veo varias cosas que afirman que preserve es en realidad el valor predeterminado.

He estado luchando por descubrir por qué ninguno de mis espacios irrompibles funciona. Iba a intentar forzar la conservación, pero luego vi:

Evan dice que el valor predeterminado es preserve https://github.com/vuejs/vue/issues/9208#issuecomment -450012518

Y documentos de opciones del compilador que se hacen eco de esa declaración https://github.com/vuejs/vue/tree/dev/packages/vue-template-compiler#options

Ahora, después de ver a @aimozg decir que condense es en realidad predeterminado, seguí adelante y configuré manualmente preserve y ¡claro! ¡Todo ha vuelto a la normalidad!

¿Están mal los documentos o la implementación?

De cualquier manera, ¿por qué condensar eliminaría nbsp? Comportamiento muy inesperado. Estoy de acuerdo en que no deberían tocarse.

Los espacios en blanco se conservan en el núcleo de Vue para garantizar la compatibilidad con versiones anteriores, mientras que en las últimas versiones de Vue CLI lo configuramos en condense de forma predeterminada.

lo mismo con la pestaña de escape &#9;

Hace muy difícil mostrar el código.

Esperando que esto se fusione ...
Solución alternativa actual
Utilizar

{{'\xa0'}}

en vez de

&nbsp;
¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

franciscolourenco picture franciscolourenco  ·  3Comentarios

bdedardel picture bdedardel  ·  3Comentarios

robertleeplummerjr picture robertleeplummerjr  ·  3Comentarios

6pm picture 6pm  ·  3Comentarios

guan6 picture guan6  ·  3Comentarios