Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

305
Views
Vue3: ¿cómo evitar que Vitejs borre/reemplace todo el contenido DOM al montar la aplicación?

Vengo de Vue 2 y estaba acostumbrado a tener mis páginas html estándar de wordpress y usar algunos componentes de Vue dentro de ellas. Simplemente pasé el contenedor a la propiedad principal de la aplicación, y luego pude usar componentes en el contenedor, donde quería, sin tener que borrar o reemplazar todo el contenido del contenedor predeterminado. Básicamente, pasar un elemento dom a la propiedad el convertía ese elemento en una aplicación Vue, con todo su contenido (incluso sin ningún componente Vue).

Con Vue 3 y createApp, parece que no hay forma de hacerlo, ya que tan pronto como monto la aplicación en un contenedor (por ejemplo, #app), todo el contenido del contenedor se borra o se reemplaza con la plantilla del componente (si se pasa un componente ). Incluso lo siguiente, que no usa ningún componente, borrará todo el contenido original de la #aplicación:

 import { createApp } from 'vue' createApp({ }).mount('#app');

¿Como evitar? ¿Cómo usar algunos componentes de repuesto en una página html gratuita? ¿Y qué tal SFC usado de la misma manera?

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Técnicamente, Vue siempre reemplaza el contenido del elemento (Vue 2 reemplazaba el elemento en sí, Vue 3 reemplaza su contenido interno - guía de migración )

SI la aplicación/componente que se está montando no tiene una opción de template o una función de render , entonces (y solo entonces) Vue toma el contenido original del elemento DOM (antes de que se monte) e intenta compilarlo en la función de procesamiento (es por eso que necesita Compilador + compilación en tiempo de ejecución cuando se usan plantillas en DOM)

También significa que si su página consiste principalmente en HTML estático (de WordPress) y solo "pequeñas chispas" de Vue, esta solución es muy ineficaz y la razón por la que existe petit-vue (recomiendo leer Comparación con Vue estándar

De todos modos. No puedo reproducir tu problema...

 const app = Vue.createApp({ }).mount("#app")
 <script src="https://unpkg.com/vue@3.2.9/dist/vue.global.js"></script> <div id='app'> <div> <h2>Hello from HTML!</h2> </div> </div>

Entonces, ¿qué puede estar mal?

  1. Verifique la consola de herramientas de desarrollo del navegador para ver si hay algún mensaje de error: si el paso de compilación (de la plantilla recuperada de DOM) falla, Vue no renderizará nada y parecerá que "Vue borra todo después del montaje".
  2. Tenga cuidado con las advertencias de análisis de plantillas DOM . Los navegadores tienden a "arreglar" HTML no válido antes de que Vue lo lea desde el DOM; puede causar errores extraños
  3. Asegúrese de usar una distribución de Vue que incluya un compilador de plantillas. Si no lo hace, también se producirá un error y se borrará todo el contenido.
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!