Regístrate para acceder a más de 15 cursos gratuitos de programación con un simulador

Mensajes Flash ⚡ JS: Desarrollo web

En los frameworks web existe un mecanismo muy sencillo y útil que se llama Flash. Este mecanismo no tiene nada que ver con la tecnología Flash, como podrías pensar. Se usa en situaciones cuando necesitas notificar al usuario sobre la realización exitosa/no exitosa de alguna acción, por ejemplo, mostrar un mensaje "¡Has iniciado sesión!" después de la autenticación. Esta tarea surge, casi siempre, después de enviar formularios en el sitio web.

flash

La característica de este mecanismo es que debe recordar el mensaje en el contexto de una solicitud y mostrarlo en otra solicitud HTTP. Usualmente esto está asociado con una redirección después de que el usuario ejecute alguna operación. Por ejemplo, si nos registramos, la creación del mensaje flash ocurre en el momento de POST /users, y se muestra después de la redirección a la página principal. El método que se utiliza para esto es guardar los datos en la sesión del usuario para poder extraerlos en la siguiente solicitud.

app.delete('/session', (req, res) => {
  req.flash('info', 'Goodbye');
  req.session.destory();
  res.redirect('/');
});

Fíjate que potencialmente puedes llamar a la función flash muchas veces.

Normalmente, los mensajes flash se dividen en niveles: info, success, warning, que se diferencian por su esquema de colores para indicar y dividir los tipos de mensajes.

A continuación se muestra un ejemplo de cómo conectar la biblioteca correspondiente:

npm i @fastify/flash
import flash from '@fastify/flash';
import fastifyCookie from '@fastify/cookie';
import fastifySession from '@fastify/secure-session';

await app.register(fastifyCookie);


await app.register(fastifySession, {
  secret: 'a secret with minimum length of 32 characters',
});

await app.register(flash);

Ejemplo de cómo mostrar mensajes en la plantilla:

for message in flash
  .alert(class=`alert-${message.type}`)
    = message.message

Para que funcione el complemento, hemos conectado adicionalmente cookies y sesiones. De esta manera, los mensajes flash pueden guardarse entre solicitudes. Esto puede ser útil durante una redirección:

app.post('/users', function(req, res){
  try {
    // ...
    req.flash('success', { type: 'success', message: 'Usuario registrado' });
  } catch(e) {
    req.flash('error', { type: 'info', message: 'Registro fallido' });
  }
  res.redirect('/users');
});

app.get('/users', (req, res) => {
  res.view('src/views/users/index', { messages: res.flash() });
});

En el sitio web de Códica puedes ver muchos de estos mensajes flash en diferentes lugares. La apariencia y los tipos de mensajes se toman completamente de Bootstrap.

Alertas de Bootstrap

flash


Trabajo independiente

Realiza todos los pasos del lección en tu computadora

  1. Agrega a la aplicación la visualización de un mensaje flash sobre el éxito o fracaso al registrarse un nuevo usuario. Si deseas hacer los mensajes flash más informativos para el usuario, puedes resaltarlos con diferentes colores dependiendo del resultado de la acción. Por ejemplo, para una registro exitoso, mostrar el mensaje en verde ✅, y en caso de errores, en rojo ❌. Para esto, puedes utilizar Bootstrap
  2. Sube los cambios a GitHub

Para acceder completo a curso necesitas un plan básico

El plan básico te dará acceso completo a todos los cursos, ejercicios y lecciones de Códica, proyectos y acceso de por vida a la teoría de las lecciones completadas. La suscripción se puede cancelar en cualquier momento.

Obtener acceso
130
cursos
1000
ejercicios
2000+
horas de teoría
3200
test

Obtén acceso

Cursos de programación para principiantes y desarrolladores experimentados. Comienza tu aprendizaje de forma gratuita

  • 130 cursos, 2000+ horas de teoría
  • 1000 ejercicios prácticos en el navegador
  • 360 000 estudiantes
Al enviar el formulario, aceptas el «Política de privacidad» y los términos de la «Oferta», y también aceptas los «Términos y condiciones de uso»

Nuestros graduados trabajan en empresas como:

Bookmate
Health Samurai
Dualboot
ABBYY