Bienvenido a mi tutorial de React and Node para crear un sitio web de comercio electrónico completamente funcional exactamente como Amazon. Abra su editor de código y sígame durante las próximas horas para crear un sitio web de comercio electrónico utilizando la pila MERN (MongoDB, ExpressJS, React y Node.JS).
Heroku: https://react-amazona.herokuapp.com
Espejo Heroku: https://react-amazona-mirror.herokuapp.com
HTML5 y CSS3: elementos semánticos, CSS Grid, Flexbox
Reaccionar: componentes, accesorios, eventos, ganchos, enrutador, Axios
Redux: Tienda, Reductores, Acciones
Nodo y Express: API web, analizador corporal, carga de archivos, JWT
MongoDB: mangosta, agregación
Desarrollo: ESLint, Babel, Git, Github,
Despliegue: Heroku
Vea el tutorial de React y Node
$ git clone [email protected]:basir/amazona.git $ cd amazona
Mongo DB local
Instálalo desde aquí
Crear archivo .env en la carpeta raíz
Establecer MONGODB_URL=mongodb://localhost/amazona
Atlas Nube MongoDB
Cree una base de datos en https://cloud.mongodb.com
Crear archivo .env en la carpeta raíz
Establezca MONGODB_URL=mongodb+srv://su-conexión-db
$ npm install $ npm start
# open new terminal $ cd frontend $ npm install $ npm start
Ejecute esto en Chrome: http://localhost:5000/api/users/seed
Devuelve el correo electrónico y la contraseña del administrador.
Ejecute esto en Chrome: http://localhost:5000/api/products/seed
Crea 6 productos de muestra.
Ejecute http://localhost:3000/signin
Ingrese el correo electrónico y la contraseña del administrador y haga clic en iniciar sesión
Preguntas y respuestas: https://webacademy.pro/amazona
Contactar al instructor: Basir
Introducción a este curso.
lo que construirás
lo que aprenderás
quiénes son las audiencias
Instalar herramientas
Editor de código
Navegador web
Extensión de código VS
Plantilla de sitio web
crear carpeta amazona
crear carpeta de plantilla
crear index.html
agregar código HTML predeterminado
enlace a estilo.css
crear encabezado, principal y pie de página
elementos de estilo
Mostrar productos
crear productos div
agregar atributos de producto
agregar enlace, imagen, nombre y precio
Crear aplicación de reacción
Interfaz de aplicación npx create-react-app
inicio de npm
Eliminar archivos no utilizados
copiar el contenido index.html a App.js
copiar el contenido de style.css a index.css
reemplazar clase con nombre de clase
Compartir código en Github
Inicializar el repositorio de git
Confirmar cambios
Crear cuenta de github
Crear repositorio en github
conectar el repositorio local al repositorio de github
enviar cambios a github
Crear calificación y componente de producto
crear componentes/Rating.js
crear clasificación div
estilo div.rating, intervalo y último intervalo
Crear componente de producto
Usar componente de calificación
Pantalla de creación de producto
Instalar reaccionar-enrutador-dom
Utilice BrowserRouter y Route para la pantalla de inicio
Crear HomeScreen.js
Agregue el código de lista de productos allí
Crear ProductScreen.js
Agregue una nueva ruta desde los detalles del producto a App.js
Cree 3 columnas para imagen, información y acción del producto.
Crear servidor Node.JS
ejecute npm init en la carpeta raíz
Actualizar paquete.json tipo de conjunto: módulo
Agregar .js a las importaciones
instalación npm expresa
crear servidor.js
agregar el comando de inicio como nodo backend/server.js
requerir expreso
Crear ruta para / regresar el backend está listo.
mover productos.js del frontend al backend
crear ruta para /api/products
devolver productos
ejecutar inicio npm
Cargar productos desde el backend
editar HomeScreen.js
definir productos, carga y error.
crear efecto de uso
define fetchData asíncrono y llámalo
instalar axio
obtener datos de /api/products
mostrarlos en la lista
crear componente de carga
crear componente de cuadro de mensaje
usarlos en la pantalla de inicio
Instale ESlint para código Linting
instalar la extensión VSCode eslint
instalación npm -D eslint
ejecute ./node_modules/.bin/eslint --init
Crear ./frontend/.env
Agregar SKIP_PREFLIGHT_CHECK=true
Agregar Redux a la pantalla de inicio
npm instala redux reacciona-redux
Crear tienda.js
estadoinit= {productos:[]}
reductor = (estado, acción) => cambiar LOAD_PRODUCTS: {productos: acción.payload}
exportar createStore predeterminado (reductor, initState)
Editar pantalla de inicio.js
shopName = useSelector(estado=>estado.productos)
despacho constante = useDispatch()
useEffect(()=>dispatch({tipo: LOAD_PRODUCTS, carga útil: datos})
Agregar tienda a index.js
Agregar Redux a la pantalla del producto
crear detalles del producto constantes, acciones y reductores
agregar reductor a store.js
usar acción en ProductScreen.js
agregue /api/product/:id a la API de backend
Manija del botón Agregar al carrito
Manejar Agregar al carrito en ProductScreen.js
crear CartScreen.js
Implementar la acción Agregar al carrito
crear constantes, acciones y reductores addToCart
agregar reductor a store.js
usar acción en CartScreen.js
renderizar cartItems.length
Pantalla de construcción de carrito
cree 2 columnas para los artículos del carrito y la acción del carrito
cartItems.length === 0? el carrito está vacío
mostrar imagen del artículo, nombre, cantidad y precio
Botón Continuar con el pago
Implementar la acción de eliminar del carrito
Implementar la acción Quitar del carrito
crear constantes, acciones y reductores removeFromCart
agregar reductor a store.js
usar acción en CartScreen.js
Crear usuarios de muestra en MongoDB
npm instala mangosta
conectarse a mongodb
crear config.js
npm instala dotenv
exportar MONGODB_URL
crear modelos/userModel.js
crear esquema de usuario y modelo de usuario
crear ruta de usuario
Datos de muestra de semillas
Crear productos de muestra en MongoDB
crear modelos/productModel.js
crear productSchema y productModel
crear productoRuta
Datos de muestra de semillas
Crear backend de inicio de sesión
crear/iniciar sesión api
comprobar correo electrónico y contraseña
generar token
instalar el token web json
instalar dotenv
devolver token y datos
pruébalo usando cartero
Pantalla de inicio de sesión de diseño
crear pantalla de inicio de sesión
renderizar campos de correo electrónico y contraseña
crear constantes de inicio de sesión, acciones y reductores
Actualizar encabezado según el inicio de sesión del usuario
Implementar la acción de inicio de sesión
crear constantes de inicio de sesión, acciones y reductores
agregar reductor a store.js
usar acción en SigninScreen.js
Crear pantalla de registro
crear API para /api/users/register
insertar nuevo usuario a la base de datos
devolver información de usuario y token
crear pantalla de registro
Agregar campos
Campos de estilo
Agregar pantalla a App.js
crear acción de registro y reductor
comprobar la validación y crear usuario
Crear pantalla de envío
crear el componente CheckoutSteps.js
crear campos de envío
implementar constantes de envío, acciones y reductores
Crear pantalla de pago
crear campos de pago
implementar constantes de envío, acciones y reductores
Pantalla Realizar pedido de diseño
campos de resumen de orden de diseño
acción de orden de diseño
Crear API para realizar pedidos
API de creación de pedidos
crear modelo de pedido
crear ordenEnrutador
crear ruta de pedido posterior
Implementar la acción Realizar pedido
manejar hacer clic en el botón realizar pedido
crear constantes de orden de lugar, acción y reductor
Crear pantalla de pedido
compilar API de pedidos para /api/orders/:id
crear OrderScreen.js
acción de detalles del pedido de envío en useEffect
cargar datos con useSelector
mostrar datos como la pantalla de realizar pedido
crear detalles de orden constante, acción y reductor
Agregar botón de PayPal
obtener identificación de cliente de paypal
configúrelo en el archivo .env
crear formulario de ruta /api/paypal/clientId
crear getPaypalClientID en api.js
agregar script de pago de PayPal en OrderScreen.js
mostrar el botón de paypal
Implementar pago de orden
actualizar el pedido después del pago
crear orden de pago en api.js
crear ruta para /:id/pay en orderRouter.js
volver a presentar después de la orden de pago
Mostrar historial de pedidos
crear API de pedidos de clientes
crear API para getMyOrders
mostrar pedidos en la pantalla de perfil
órdenes de estilo
Mostrar perfil de usuario
crear API de detalles de usuario
mostrar información del usuario
Actualizar perfil de usuario
crear api de actualización de usuario
actualizar información de usuario
Crear vista de administrador
Crear menú de administración
Crear middleware de administración en el backend
Crear ruta de administrador en el frontend
Listar productos
Pantalla Crear lista de productos
Agregar reductor a la tienda
mostrar productos en la pantalla
Crear producto
construir crear API de producto
construir el botón Crear producto
definir producto crear constante, acción y reductor
usar acción en la pantalla de lista de productos
Crear pantalla de edición de producto
crear pantalla de edición
definir estado
crear campos
cargar detalles del producto
agregar a rutas
Actualizar producto
definir API de actualización
definir la constante de actualización del producto, la acción y el reductor
usar acción en la pantalla de edición de producto
Subir imagen del producto
npm instala multer
definir el enrutador de carga
crear carpeta de cargas
Manejar la interfaz
Eliminar producto
crear eliminar api en el backend
crear eliminar constantes, acción y reductor
Úselo en la pantalla de lista de productos
Listar pedidos
crear API de lista de pedidos
crear pantalla de lista de pedidos
Agregar reductor a la tienda
mostrar productos en la pantalla
Eliminar pedido 2. crear acción de eliminación de pedido y reductor 3. agregar acción de eliminación de pedido a la lista de pedidos
Entregar pedido
crear acciones constantes y reductores para entregar el pedido
agregar acción de entrega de pedido a la pantalla de detalles del pedido
Publicar en Heroku
Crear repositorio git
Crear cuenta heroku
instalar Heroku CLI
inicio de sesión heroku
aplicaciones heroku: crear amazona
Edite package.json para compilar el script
Crear archivo de perfil
Crear base de datos de atlas mongodb
Establecer la conexión de la base de datos en las variables env de heroku
Comprométete y empuja
Listar usuarios
construir API para usuarios de la lista
Crear pantalla de lista de usuarios
crear detalles de orden constante, acción y reductor
Eliminar usuarios
construir API para eliminar usuarios
crear detalles de orden constante, acción y reductor
Usar acción en UserListScreen
Editar usuario
construir API para usuarios de actualización
crear interfaz de usuario de pantalla de edición
Implementar vista de vendedor
agregar menú del vendedor
crear ruta de vendedor
listar productos para el vendedor
listar pedidos para el vendedor
agregar vendedor a la lista de productos y a la pantalla de detalles
Crear página de vendedor
crear página de vendedor
actualizar el componente del producto y la pantalla del producto
actualizar rutas de productos
Añadir carrusel de mejores vendedores
instalar carrusel de reacción
implementar acciones y reductores para los más vendidos
use el carrusel de reacción con datos en la pantalla de inicio
Forzar pedidos de artículos de un vendedor
actualizar la acción addToCart para comprarle a un vendedor en un pedido
Crear cuadro de búsqueda y pantalla de búsqueda
crear barra de búsqueda en Header.js
agregar estilo
manejar el formulario de envío
editar la URL de análisis para obtener la cadena de consulta
actualizar la API de la lista de productos para buscar por nombre
Agregar filtro de búsqueda avanzada 1. filtrar por categoría 2. filtrar por rango de precios 3. filtrar por calificación promedio
Completa búsqueda avanzada 1. filtrar por precio 2. filtrar por calificación 3. ordenar por precio, calificación, ...
Calificar y revisar productos 1. calificar productos 2. crear acciones y reductores
Elija la dirección en Google Map 1. cree las credenciales del mapa de Google 2. actualice el archivo .env con la clave de API de Google 3. cree una API para enviar la API de Google a la interfaz 4. cree una pantalla de mapa 5. busque la API de Google 6. getUserLocation 7. instale @react- google-maps/api 8. úselo en la pantalla de envío 9. aplique el mapa a la pantalla de pago
Corrección de errores: ejecución local sin problemas
agregar información del vendedor a data.js
datos del producto inicial con información de administrador como vendedor
arreglar isSeller e isAdmin al actualizar usuario
eliminar la autenticación de los detalles del usuario
Implementar paginación
agregar paginación al enrutador del producto en el backend
aplicar el número de página a las acciones y reductores en la interfaz
mostrar números de página en la pantalla de búsqueda
Recibo del pedido por correo electrónico mediante mailgun 1. cree una cuenta de mailgun 2. agregue y verifique su dominio en mailgun 3. instale mailgun-js 4. establezca la clave api en el archivo env 5. cambie la orden de pago en orderRouter 6. envíe el correo electrónico
Crear pantalla de panel
Crear datos de gráficos en el backend
Pantalla de creación de gráficos
Implementar chat en vivo con clientes
use socket io para crear backend
crear componente de cuadro de chat
crear pantalla de soporte
Actualice a React 17, Router 6, Mongoose 6
backend
Desinstalar e instalar todos los paquetes.
eliminar opciones en mongoose connect
envolver mailgun en try catch en ordenRouter
Interfaz
Desinstalar e instalar todos los paquetes.
eliminar en el cuadro de búsqueda
envolver todo en
reemplazar con <elemento de ruta={}>
reemplazar con <elemento de ruta={ }/>
reemplazar y también
Actualizar PrivateRoute, AdminRoute y SellerRoute
reemplace push() con navegar() de useNavigate
reemplace props.match.params.id con const params = useParams();
reemplace props.location.search con const {buscar} = useLocation(); y URLSearchParams
reemplace props.match.path con const {pathname} = useLocation();
poner userInfo en useEffect en ChatBox, SupportScreen