En este post de JavaScript y desarrollo web te mostraré cómo implementar un carrito de compras en el lado del cliente con JS.

Será un ejemplo completo de un proyecto en donde además de tener el carrito de compras tendremos un módulo de tienda (pero no habrá transacciones ni pagos reales) y módulo de gestión de productos.

Este proyecto se basa ampliamente en el CRUD con AJAX, PHP y MySQL publicado anteriormente, pero agregamos la gestión del carrito de compras dentro de localStorage.

Como siempre, te dejaré el código completo y listo para descargar.

Gestión de productos

Gestión de productos para el carrito de compras con JS

Gestión de productos para el carrito de compras con JS

Como ya lo comenté arriba, este proyecto se basa y toma código de otro publicado anteriormente; por lo que si no entiendes algunos conceptos te recomiendo leer el post que cité arriba.

En este caso ya no veremos cómo guardar, obtener, editar y eliminar los productos, solo nos vamos a centrar en la gestión del carrito de compras, aunque igualmente te dejaré el código completo.

Librería para carrito de compras

Voy a usar mi propia clase que encierra el comportamiento del carrito de compras:

Es solo una envoltura que encierra todo el comportamiento del carrito, para poder reusarlo en varios lugares. De nuevo, si quieres profundizar, leer el artículo que dejé en el enlace.

Tienda

Tienda - Lista de productos para agregar al carrito de compras con JavaScript

Tienda – Lista de productos para agregar al carrito de compras con JavaScript

La tienda es el lugar en donde se muestran los productos al usuario para que se puedan agregar al carrito de compras. En este lugar mostraremos los productos y dependiendo del estado de cada uno, botones.

Si el producto está en el carrito, se muestra que ya está agregado junto con un botón para removerlo. En caso de que no, se muestra un botón para agregarlo.

En este caso hacemos un filtro, pues primero obtenemos todos los productos del back-end y ya en el lado del cliente al renderizar los vamos filtrando.

Hay un montón de código debido a que la plantilla lleva varios divs y clases; aquí se ve claramente el uso de frameworks o de al menos librerías para el manejo de plantillas con JS.

Para cada clic del botón existe una función que invoca a un método del carrito y refresca el conteo del encabezado. Presta atención a las líneas 59 y 69.

Refrescar conteo de productos en el encabezado

Como te puedes dar cuenta, en el encabezado existe el botón de ver carrito junto con el conteo de productos. En este caso se necesita refrescar cuando el usuario agrega o quita un producto, pero también cuando navega en otros lugares.

La solución a esto fue colocar la función que refresca el conteo del carrito de compras en el encabezado. Para empezar puse un id al span que tiene el conteo, mismo que es conteoCarrito:

Después lo he refrescado con JavaScript, además de exponer esa función de manera global para que pueda ser llamada desde otros lugares.

Ahora esa función se llama en el encabezado, pero podemos llamarla desde cualquier otro lugar. En estos casos obtenemos el mismo carrito porque usamos la clave por defecto al instanciarlo, si tú usas otra clave, recuerda indicarla también al construir el objeto en el encabezado.

Ver carrito de compras

Ver carrito de compras con productos almacenados en localStorage usando JavaScript

Ver carrito de compras con productos almacenados en localStorage usando JavaScript

Para finalizar con los fragmentos de código importante, otro módulo de gran relevancia es el de ver el carrito de compras. En el mismo renderizamos una tabla con los productos, pero estos ya no vienen del servidor, sino que son tomados del lado del cliente.

Aquí deberías enviar los productos o cada id de los mismos al servidor cuando se termine la compra, pero hacer una comprobación en cuanto al precio e ID.

Además de tener una referencia a la tabla para dibujar todos los productos, tenemos una referencia al total (para mostrar el total una vez calculado) y una al botón que termina la compra.

El total lo estamos calculando y dibujando en las líneas 16, 18 y 51. Para el caso del clic del botón (línea 6) solo imprimimos los productos, aquí el programador es libre de hacer con la lista lo que mejor le parezca, pues este ejemplo solo contempla el manejo del carrito de compras.

Configurando el proyecto

Si descargas el código, recuerda crear la base de datos y el archivo env.php (no incluido) basándote en el archivo env.ejemplo.php.

Configura tus credenciales en el archivo env.php e importa las tablas de esquema.sql; después de eso puedes visitar el proyecto en tu localhost o servidor de internet y comenzar a probar.

Poniendo todo junto

El código completo y actualizado de esta implementación de carrito de compras con JavaScript usando almacenamiento del lado del cliente lo encuentras en su respectivo repositorio.

Recuerda que esto se basa en el CRUD de PHP con JavaScript y MySQL, pero los productos bien podrían venir de cualquier servicio del lado del servidor.

En caso de que te guste PHP, ya hice una implementación del carrito de compras usando sesiones.

Te dejo con más sobre JavaScript, así como un vistazo a otros proyectos open source.


Estoy disponible para trabajar en tu proyecto o realizar tu tarea pendiente, no dudes en ponerte en contacto conmigo.
Si el post fue de tu agrado muestra tu apoyo compartiéndolo, suscribiéndote al blog, siguiéndome o realizando una donación.

Suscribir por correo

Ingresa tu correo y recibirás mis últimas entradas sobre programación, open source, bases de datos y todo lo relacionado con informática

Únete a otros 1,477 suscriptores


parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

0 Comentarios

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

A %d blogueros les gusta esto: