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

167
Views
Contenido parpadeante al intentar mostrar contenido no autenticado y autenticado en la misma página

(Proyecto Nuxt) Estoy atascado encontrando una solución relacionada con mostrar contenido autenticado y no autenticado en la misma página.

Tengo dos posibles soluciones en mente, pero tienen algunas advertencias.

El primero, decide el método mounted si el usuario puede ver el contenido autenticado pero no pude resolver el problema del contenido parpadeante, esta es la demostración de ese enfoque: https://60f08a8293123d00e57c14e8--happy-minsky-1268c6.netlify .app/ Haga clic en el botón de inicio de sesión y vuelva a cargar la página, verá el contenido parpadeante

Mi segundo enfoque es usar el null para evitar tanto el contenido autenticado como el no autenticado hasta que la aplicación alcance el método mounted . El problema con esta solución es que no es compatible con los motores de búsqueda porque no hay generación de contenido estático, compare estos dos enlaces:

Generado a partir de esta solución: https://gist.github.com/ltroya-as/fbbdce2b3dc30063e9c4ec7e93e3aba1#file-index-generated-file-html-L522

Esperado: https://gist.github.com/ltroya-as/d37e3d0a89efebbfd66c2daf7700f50d#file-expected-generated-file-html-L523

¿Hay alguna forma de hacer que la segunda solución sea más compatible con los motores de búsqueda? Me preocupa que la segunda solución afecte los resultados de los motores de búsqueda.

Repositorio con instrucciones: https://github.com/ltroya-as/nuxt-rehydratation-example

--- Actualizar

Mi proyecto está configurado en modo estático completo

over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

Debe usar beforeEach (protectores de navegación); este debería ser el truco. Puede usarlo para verificar si el usuario inició sesión o no allí, https://router.vuejs.org/guide/advanced/navigation-guards.html#global-before-guards

algo como esto:

 const router = new VueRouter({ routes: [ { path: '/foo', component: Foo, beforeEnter: (to, from, next) => { // ... } } ] })

Creo que esta respuesta lo ayudará a pasar datos antes de ingresar para enrutar componentes

over 4 years ago · Santiago Trujillo Report

0

Vue es un marco del lado del cliente. Todo el HTML es generado por JS dentro del navegador. Esto significa que la aplicación Vue típica es simplemente un archivo HTMl muy simple, casi sin HTML y algunas etiquetas CSS y Javascript...

Este es un problema para SEO porque la mayoría de los rastreadores (Google, FB, Twitter) no ejecutan JS y solo escanean el HTML devuelto por el servidor...

Para solucionar esto se crearon frameworks como Nuxt. Resuelven el problema ejecutando la aplicación Vue en el servidor y presentando el HTML en el servidor, ya sea en el momento de la solicitud (Nuxt clásico: se genera un nuevo HTML cada vez que llega la solicitud, necesita el servidor Node) o en el momento de la compilación (Nuxt generar - HTML se genera en un archivo en el momento de la compilación y se devuelve el mismo HTML para cada solicitud)

En todos los casos, el HTML devuelto por el servidor es diferente, pero todo lo demás es igual. Todavía es una aplicación Vue , que se ejecuta en el cliente y una vez que se inicia (y eso lleva algo de tiempo, por lo que el usuario solo ve el contenido enviado por el servidor mientras tanto), anula cualquier HTML devuelto por el servidor. .

Es por eso que ve el "parpadeo" y me temo que no hay una solución fácil para este problema cuando su sitio se genera completamente de forma estática.

  1. Solución con el uso de null : el resultado es claro, sin contenido -> sin SEO. No hay manera de evitarlo...
  2. Si su objetivo es SEO, supongo que mostrar contenido para clientes autenticados de forma predeterminada no tiene sentido, ya que eso revelaría dicho contenido a Google (u otro rastreador) y a los usuarios, entonces, ¿por qué esconderlo detrás de la autenticación en primer lugar?
  3. La única opción que queda es generar contenido para usuarios no autenticados y vivir con el parpadeo para usuarios que ya iniciaron sesión

Creo que si conoce el problema, puede minimizarlo mediante el diseño; por ejemplo, no mezcle contenido de autenticación/no autenticación en una sola página, por ejemplo. Pero para su ejemplo simple y "no de la vida real", no tiene solución

over 4 years ago · Santiago Trujillo 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!