Bienvenue dans mon tutoriel React et Node pour créer un site Web de commerce électronique entièrement fonctionnel exactement comme Amazon. Ouvrez votre éditeur de code et suivez-moi pendant les prochaines heures pour créer un site e-commerce en utilisant la stack MERN (MongoDB, ExpressJS, React et Node.JS).
Heroku : https://react-amazona.herokuapp.com
Miroir Heroku : https://react-amazona-mirror.herokuapp.com
HTML5 et CSS3 : éléments sémantiques, grille CSS, Flexbox
React : composants, accessoires, événements, crochets, routeur, Axios
Redux : magasin, réducteurs, actions
Node & Express : API Web, analyseur de corps, téléchargement de fichiers, JWT
MongoDB : Mangouste, Agrégation
Développement : ESLint, Babel, Git, Github,
Déploiement : Heroku
Regarder le didacticiel React & Node
$ git clone [email protected]:basir/amazona.git $ cd amazona
MongoDB locale
Installez-le à partir d'ici
Créer un fichier .env dans le dossier racine
Définir MONGODB_URL=mongodb://localhost/amazona
Atlas Cloud MongoDB
Créez une base de données sur https://cloud.mongodb.com
Créer un fichier .env dans le dossier racine
Définir MONGODB_URL=mongodb+srv://your-db-connection
$ npm install $ npm start
# open new terminal $ cd frontend $ npm install $ npm start
Exécutez ceci sur Chrome : http://localhost:5000/api/users/seed
Il renvoie l'e-mail et le mot de passe de l'administrateur
Exécutez ceci sur Chrome : http://localhost:5000/api/products/seed
Il crée 6 exemples de produits
Exécutez http://localhost:3000/signin
Entrez l'e-mail et le mot de passe de l'administrateur et cliquez sur Connexion
Questions/Réponses : https://webacademy.pro/amazona
Contacter l'instructeur : Basir
Introduction à ce cours
ce que tu vas construire
ce que tu apprendras
qui sont les publics
Installer les outils
Éditeur de code
Navigateur Web
Extension de code VS
Modèle de site Web
Créer un dossier Amazon
créer un dossier de modèles
créer index.html
ajouter le code HTML par défaut
lien vers style.css
créer un en-tête, un principal et un pied de page
éléments de style
Produits d'affichage
créer des produits div
ajouter des attributs de produit
ajouter un lien, une image, un nom et un prix
Créer une application React
interface npx create-react-app
npm démarrer
Supprimer les fichiers inutilisés
copier le contenu index.html dans App.js
copier le contenu style.css dans index.css
remplacer la classe par className
Partager le code sur Github
Initialiser le dépôt git
Valider les modifications
Créer un compte GitHub
Créer un dépôt sur github
connecter le dépôt local au dépôt github
pousser les modifications vers github
Créer une évaluation et un composant de produit
créer des composants/Rating.js
créer un div.rating
style div.rating, travée et dernière travée
Créer un composant Produit
Utiliser le composant Notation
Créer un écran de produit
Installer React-Router-Dom
Utiliser BrowserRouter et Route pour l'écran d'accueil
Créer HomeScreen.js
Ajoutez-y le code de la liste de produits
Créer ProductScreen.js
Ajouter une nouvelle route depuis les détails du produit vers App.js
Créez 3 colonnes pour l'image du produit, les informations et l'action
Créer un serveur Node.JS
exécutez npm init dans le dossier racine
Mettre à jour le type d'ensemble package.json : module
Ajouter .js aux importations
npm installer express
créer serveur.js
ajouter la commande start en tant que nœud backend/server.js
exiger express
créer une route pour / retourner le backend est prêt.
déplacer products.js du frontend vers le backend
créer une route pour /api/products
retourner les produits
exécuter npm start
Charger des produits depuis le backend
modifier HomeScreen.js
définir les produits, le chargement et l'erreur.
créer un effet d'utilisation
définir async fetchData et l'appeler
installer axios
obtenir des données de /api/products
montre-les dans la liste
créer un composant de chargement
créer un composant de boîte de message
utilisez-les dans HomeScreen
Installer ESlint pour le linting de code
installer l'extension VSCode eslint
npm install -D eslint
exécutez ./node_modules/.bin/eslint --init
Créer ./frontend/.env
Ajoutez SKIP_PREFLIGHT_CHECK=true
Ajouter Redux à l'écran d'accueil
npm installer redux réagir-redux
Créer un magasin.js
initState= {produits :[]}
réducteur = (état, action) => switch LOAD_PRODUCTS : {products : action.payload}
exporter le createStore par défaut (réducteur, initState)
Modifier HomeScreen.js
shopName = useSelector(state=>state.products)
const dispatch = useDispatch()
useEffect(()=>dispatch({type : LOAD_PRODUCTS, charge utile : data})
Ajouter un magasin à index.js
Ajouter Redux à l'écran du produit
créer des constantes, des actions et des réducteurs de détails sur le produit
ajouter un réducteur à store.js
utiliser l'action dans ProductScreen.js
ajouter /api/product/:id à l'API backend
Bouton Ajouter au panier
Gérer l'ajout au panier dans ProductScreen.js
créer CartScreen.js
Implémenter l’action Ajouter au panier
créer des constantes, des actions et des réducteurs addToCart
ajouter un réducteur à store.js
utiliser l'action dans CartScreen.js
rendre cartItems.length
Écran de création de panier
créer 2 colonnes pour les articles du panier et l'action du panier
cartItems.length === 0 ? le panier est vide
afficher l'image de l'article, le nom, la quantité et le prix
Bouton Passer à la caisse
Implémenter l'action de suppression du panier
Implémenter l’action Supprimer du panier
créer des constantes, des actions et des réducteurs RemoveFromCart
ajouter un réducteur à store.js
utiliser l'action dans CartScreen.js
Créer des exemples d'utilisateurs dans MongoDB
npm installer la mangouste
se connecter à mongodb
créer config.js
npm installer dotenv
exporter MONGODB_URL
créer des modèles/userModel.js
créer userSchema et userModel
créer un itinéraire utilisateur
Données d'échantillon de semences
Créer des exemples de produits dans MongoDB
créer des modèles/productModel.js
créer productSchema et productModel
créer un produitRoute
Données d'échantillon de semences
Créer un backend de connexion
créer/API de connexion
vérifier l'e-mail et le mot de passe
générer un jeton
installer le jeton Web Json
installer dotenv
renvoyer le jeton et les données
testez-le avec Postman
Écran de connexion de conception
créer un écran de connexion
afficher les champs d'e-mail et de mot de passe
créer des constantes de connexion, des actions et des réducteurs
Mettre à jour l'en-tête en fonction de la connexion de l'utilisateur
Implémenter l'action de connexion
créer des constantes de connexion, des actions et des réducteurs
ajouter un réducteur à store.js
utiliser l'action dans SigninScreen.js
Écran Créer un registre
créer une API pour /api/users/register
insérer un nouvel utilisateur dans la base de données
renvoyer les informations utilisateur et le jeton
créer un écran de registre
Ajouter des champs
Champs de style
Ajouter un écran à App.js
créer une action de registre et un réducteur
vérifier la validation et créer un utilisateur
Créer un écran d'expédition
créer le composant CheckoutSteps.js
créer des champs d'expédition
mettre en œuvre des constantes d'expédition, des actions et des réducteurs
Créer un écran de paiement
créer des champs de paiement
mettre en œuvre des constantes d'expédition, des actions et des réducteurs
Écran de commande de conception
champs récapitulatifs de l'ordre de conception
action de commande de conception
Créer une API de commande
API createOrder
créer un modèle de commande
créer une commandeRouter
créer un itinéraire de commande
Implémenter l’action PlaceOrder
gérer passer la commande cliquez sur le bouton
créer des constantes de commande, une action et un réducteur
Écran Créer une commande
construire une API de commande pour /api/orders/:id
créer OrderScreen.js
action sur les détails de la commande d'expédition dans useEffect
charger des données avec useSelector
afficher des données comme l'écran de commande
créer les détails de la commande constante, action et réducteur
Ajouter un bouton PayPal
obtenir l'identifiant client de Paypal
définissez-le dans le fichier .env
créer un formulaire d'itinéraire /api/paypal/clientId
créer getPaypalClientID dans api.js
ajouter un script de paiement Paypal dans OrderScreen.js
afficher le bouton Paypal
Mettre en œuvre le paiement de la commande
mettre à jour la commande après le paiement
créer payOrder dans api.js
créer un itinéraire pour /:id/pay dans orderRouter.js
restituer après l'ordre de paiement
Afficher l'historique des commandes
créer une API de commandes clients
créer une API pour getMyOrders
afficher les commandes dans l'écran de profil
commandes de style
Afficher le profil utilisateur
créer une API de détails sur l'utilisateur
afficher les informations utilisateur
Mettre à jour le profil utilisateur
créer une API de mise à jour utilisateur
mettre à jour les informations utilisateur
Créer une vue administrateur
Créer un menu d'administration
Créer un middleware d'administration dans le backend
Créer une route d'administration dans le frontend
Liste des produits
Écran Créer une liste de produits
Ajouter un réducteur au magasin
afficher les produits à l'écran
Créer un produit
construire créer une API de produit
construire le bouton Créer un produit
définir le produit créer une constante, une action et un réducteur
utiliser l'action dans l'écran Liste de produits
Écran de modification du produit
créer un écran d'édition
définir l'état
créer des champs
charger les détails du produit
ajouter aux itinéraires
Mettre à jour le produit
définir l'API de mise à jour
définir la constante, l'action et le réducteur de mise à jour du produit
utiliser l'action dans l'écran de modification du produit
Télécharger l'image du produit
npm installer multer
définir le routeur de téléchargement
créer un dossier de téléchargements
Gérer l'interface
Supprimer le produit
créer une API de suppression dans le backend
créer des constantes de suppression, une action et un réducteur
utilisez-le dans l'écran de la liste des produits
Liste des commandes
créer une API de liste de commandes
Créer un écran de liste de commandes
Ajouter un réducteur au magasin
afficher les produits à l'écran
Supprimer la commande 2. créer une action de suppression de commande et un réducteur 3. ajouter une action de suppression de commande à la liste de commandes
Livrer la commande
créer des actions et des réducteurs constants pour livrer l'ordre
ajouter une action de livraison de commande à l'écran des détails de la commande
Publier sur Heroku
Créer un dépôt git
Créer un compte Heroku
installer la CLI Heroku
connexion Heroku
applications Heroku : créer Amazon
Modifier package.json pour le script de construction
Créer un fichier professionnel
Créer une base de données Atlas MongoDB
Définir la connexion à la base de données dans les variables d'environnement Heroku
S'engager et pousser
Liste des utilisateurs
créer une API pour les utilisateurs de la liste
Écran Créer une liste d'utilisateurs
créer les détails de la commande constante, action et réducteur
Supprimer des utilisateurs
créer une API pour supprimer des utilisateurs
créer les détails de la commande constante, action et réducteur
Utiliser l'action dans UserListScreen
Modifier l'utilisateur
créer une API pour les utilisateurs de mise à jour
créer une interface utilisateur d'écran d'édition
Implémenter la vue vendeur
ajouter un menu vendeur
créer un itinéraire vendeur
lister les produits pour le vendeur
lister les commandes du vendeur
ajouter le vendeur à la liste de produits et à l'écran de détails
Créer une page vendeur
créer une page vendeur
mettre à jour le composant du produit et l'écran du produit
mettre à jour les itinéraires de produits
Ajouter un carrousel des meilleures ventes
installer le carrousel de réaction
mettre en place des actions et des réducteurs pour les meilleurs vendeurs
utilisez le carrousel de réaction avec les données dans l'écran d'accueil
Forcer la commande d'articles auprès d'un seul vendeur
mettre à jour l'action addToCart pour acheter auprès d'un vendeur lors d'une commande
Créer un champ de recherche et un écran de recherche
créer une barre de recherche dans Header.js
ajouter du style
gérer le formulaire de soumission
modifier l'URL d'analyse pour obtenir la chaîne de requête
mettre à jour l'API de la liste de produits pour la recherche par nom
Ajouter un filtre de recherche avancé 1. filtrer par catégorie 2. filtrer par gamme de prix 3. filtrer par note moyenne
Recherche avancée complète 1. filtrer par prix 2. filtrer par note 3. trier par prix, note, ...
Évaluer et évaluer les produits 1. évaluer les produits 2. créer des actions et des réducteurs
Choisissez l'adresse sur Google Map 1. créez les informations d'identification de Google Map 2. mettez à jour le fichier .env avec la clé Google Api 3. créez une API pour envoyer l'API Google au frontend 4. créez un écran de carte 5. récupérez l'API Google 6. getUserLocation 7. installez @react- google-maps/api 8. utilisez-le dans l'écran d'expédition 9. appliquez la carte à l'écran de paiement
Correction d'un bug : exécution locale sans problème
ajouter des informations sur le vendeur à data.js
données sur les produits de semences avec informations d'administration en tant que vendeur
correction de isSeller et isAdmin lors de la mise à jour de l'utilisateur
supprimer l'authentification des détails de l'utilisateur
Implémenter la pagination
ajouter la pagination au routeur de produit dans le backend
appliquer le numéro de page aux actions et aux réducteurs dans le frontend
afficher les numéros de page dans l'écran de recherche
Envoyer un reçu de commande par mailgun 1. créer un compte mailgun 2. ajouter et vérifier votre domaine sur mailgun 3. installer mailgun-js 4. définir la clé API dans le fichier env 5. modifier l'ordre de paiement dans orderRouter 6. envoyer un e-mail au
Créer un écran de tableau de bord
Créer des données graphiques dans le backend
Écran Créer un graphique
Mettre en œuvre le chat en direct avec les clients
utiliser socket io pour créer un backend
créer un composant de boîte de discussion
créer un écran de support
Mise à niveau vers React 17, Router 6, Mongoose 6
Back-end
Désinstallez et installez tous les packages
supprimer les options dans Mongoose Connect
envelopper mailgun dans try catch dans orderRouter
L'extrémité avant
Désinstallez et installez tous les packages
supprimer dans la zone de recherche
envelopper tout dedans
remplacer par <Route element={}>
remplacer par <Route element={ }/>
remplacer et aussi
Mettre à jour PrivateRoute, AdminRoute et SellerRoute
remplacez push() par naviguer() de useNavigate
remplacez props.match.params.id par const params = useParams();
remplacez props.location.search par const { search } = useLocation(); et URLSearchParams
remplacez props.match.path par const {pathname} = useLocation();
mettre userInfo dans useEffect dans ChatBox, SupportScreen