Willkommen zu meinem React- und Node-Tutorial zum Erstellen einer voll funktionsfähigen E-Commerce-Website genau wie Amazon. Öffnen Sie Ihren Code-Editor und folgen Sie mir in den nächsten Stunden, um eine E-Commerce-Website mit dem MERN-Stack (MongoDB, ExpressJS, React und Node.JS) zu erstellen.
Heroku: https://react-amazona.herokuapp.com
Heroku-Spiegel: https://react-amazona-mirror.herokuapp.com
HTML5 und CSS3: Semantische Elemente, CSS Grid, Flexbox
Reagieren: Komponenten, Requisiten, Ereignisse, Hooks, Router, Axios
Redux: Speichern, Reduzierer, Aktionen
Node & Express: Web-API, Body-Parser, Datei-Upload, JWT
MongoDB: Mongoose, Aggregation
Entwicklung: ESLint, Babel, Git, Github,
Einsatz: Heroku
Sehen Sie sich das React & Node-Tutorial an
$ git clone [email protected]:basir/amazona.git $ cd amazona
Lokale MongoDB
Installieren Sie es von hier aus
Erstellen Sie eine .env-Datei im Stammordner
Legen Sie MONGODB_URL=mongodb://localhost/amazona fest
Atlas Cloud MongoDB
Erstellen Sie eine Datenbank unter https://cloud.mongodb.com
Erstellen Sie eine .env-Datei im Stammordner
Legen Sie MONGODB_URL=mongodb+srv://your-db-connection fest
$ npm install $ npm start
# open new terminal $ cd frontend $ npm install $ npm start
Führen Sie dies auf Chrome aus: http://localhost:5000/api/users/seed
Es gibt die E-Mail-Adresse und das Passwort des Administrators zurück
Führen Sie dies auf Chrome aus: http://localhost:5000/api/products/seed
Es entstehen 6 Musterprodukte
Führen Sie http://localhost:3000/signin aus
Geben Sie die E-Mail-Adresse und das Passwort des Administrators ein und klicken Sie auf „Anmelden“.
Fragen/Antworten: https://webacademy.pro/amazona
Kontakt zum Kursleiter: Basir
Einführung in diesen Kurs
was du bauen wirst
was du lernen wirst
Wer sind die Zuschauer?
Tools installieren
Code-Editor
Webbrowser
VS-Code-Erweiterung
Website-Vorlage
Amazon-Ordner erstellen
Vorlagenordner erstellen
Erstellen Sie index.html
Fügen Sie Standard-HTML-Code hinzu
Link zu style.css
Kopf-, Haupt- und Fußzeile erstellen
Stilelemente
Produkte anzeigen
Produkte erstellen div
Produktattribute hinzufügen
Fügen Sie Link, Bild, Namen und Preis hinzu
Erstellen Sie eine Reaktions-App
npx create-react-app-Frontend
npm-Start
Entfernen Sie nicht verwendete Dateien
Kopieren Sie den Inhalt von index.html nach App.js
Kopieren Sie den Inhalt von style.css nach index.css
Ersetzen Sie die Klasse durch den Klassennamen
Code auf Github teilen
Git-Repository initialisieren
Änderungen übernehmen
Erstellen Sie ein Github-Konto
Erstellen Sie ein Repo auf Github
Verbinden Sie das lokale Repo mit dem Github-Repo
Push-Änderungen auf Github
Erstellen Sie eine Bewertung und eine Produktkomponente
Erstellen Sie „components/Rating.js“.
div.Bewertung erstellen
Stil-Div.-Bewertung, Spanne und letzte Spanne
Produktkomponente erstellen
Verwenden Sie die Bewertungskomponente
Produktbildschirm erstellen
Installieren Sie React-Router-Dom
Verwenden Sie BrowserRouter und Route für den Startbildschirm
Erstellen Sie HomeScreen.js
Fügen Sie dort den Produktlistencode hinzu
Erstellen Sie ProductScreen.js
Fügen Sie eine neue Route von Produktdetails zu App.js hinzu
Erstellen Sie 3 Spalten für Produktbild, Informationen und Aktion
Erstellen Sie einen Node.JS-Server
Führen Sie npm init im Stammordner aus
Aktualisieren Sie den Satztyp package.json: Modul
Fügen Sie .js zu Importen hinzu
npm install express
Erstellen Sie server.js
Fügen Sie den Startbefehl als Knoten backend/server.js hinzu
erfordern Express
Route erstellen für / Rückkehr Backend ist fertig.
Verschieben Sie products.js vom Frontend ins Backend
Route für /api/products erstellen
Produkte zurückgeben
Führen Sie npm start aus
Laden Sie Produkte aus dem Backend
Bearbeiten Sie HomeScreen.js
Definieren Sie Produkte, Belastung und Fehler.
useEffect erstellen
Definieren Sie async fetchData und rufen Sie es auf
Axios installieren
Daten aus /api/products abrufen
Zeigen Sie sie in der Liste an
Ladekomponente erstellen
Erstellen Sie eine Message-Box-Komponente
Verwenden Sie sie im HomeScreen
Installieren Sie ESlint für Code-Linting
Installieren Sie die VSCode-Eslint-Erweiterung
npm install -D eslint
Führen Sie ./node_modules/.bin/eslint --init aus
Erstellen Sie ./frontend/.env
Fügen Sie SKIP_PREFLIGHT_CHECK=true hinzu
Fügen Sie Redux zum Startbildschirm hinzu
NPM Install Redux React-Redux
Erstellen Sie store.js
initState= {Produkte:[]}
Reducer = (Zustand, Aktion) => switch LOAD_PRODUCTS: {products: action.payload}
export default createStore(reducer, initState)
Bearbeiten Sie HomeScreen.js
shopName = useSelector(state=>state.products)
const distribution = useDispatch()
useEffect(()=>dispatch({type: LOAD_PRODUCTS, payload: data})
Store zu index.js hinzufügen
Fügen Sie Redux zum Produktbildschirm hinzu
Erstellen Sie Produktdetails-Konstanten, Aktionen und Reduzierer
Reduzierer zu store.js hinzufügen
Verwenden Sie die Aktion in ProductScreen.js
Fügen Sie /api/product/:id zur Backend-API hinzu
Behandeln Sie die Schaltfläche „Zum Warenkorb hinzufügen“.
Behandeln Sie „In den Warenkorb hinzufügen“ in ProductScreen.js
Erstellen Sie CartScreen.js
Implementieren Sie die Aktion „Zum Warenkorb hinzufügen“.
Erstellen Sie addToCart-Konstanten, Aktionen und Reduzierer
Reduzierer zu store.js hinzufügen
Verwenden Sie die Aktion in CartScreen.js
rendern Sie „cartItems.length“.
Bildschirm „Warenkorb erstellen“.
Erstellen Sie zwei Spalten für Warenkorbartikel und Warenkorbaktion
cartItems.length === 0 ? Warenkorb ist leer
Artikelbild, Name, Menge und Preis anzeigen
Klicken Sie auf die Schaltfläche „Zur Kasse gehen“.
Implementieren Sie die Aktion „Aus dem Warenkorb entfernen“.
Implementieren Sie die Aktion „Aus dem Warenkorb entfernen“.
Erstellen Sie RemoveFromCart-Konstanten, Aktionen und Reduzierer
Reduzierer zu store.js hinzufügen
Verwenden Sie die Aktion in CartScreen.js
Erstellen Sie Beispielbenutzer in MongoDB
npm mongoose installieren
Mit Mongodb verbinden
Erstellen Sie config.js
npm install dotenv
MONGODB_URL exportieren
Erstellen Sie models/userModel.js
Erstellen Sie userSchema und userModel
BenutzerRoute erstellen
Daten zur Saatgutprobe
Erstellen Sie Beispielprodukte in MongoDB
Erstellen Sie models/productModel.js
Erstellen Sie ein Produktschema und ein Produktmodell
ProduktRoute erstellen
Daten zur Saatgutprobe
Erstellen Sie ein Anmelde-Backend
/Signin-API erstellen
Überprüfen Sie E-Mail und Passwort
Token generieren
JSON-Web-Token installieren
installiere dotenv
Token und Daten zurückgeben
Testen Sie es mit Postman
Entwerfen Sie den Anmeldebildschirm
SigninScreen erstellen
E-Mail- und Passwortfelder rendern
Erstellen Sie Anmeldekonstanten, Aktionen und Reduzierer
Aktualisieren Sie den Header basierend auf der Benutzeranmeldung
Implementieren Sie die Anmeldeaktion
Erstellen Sie Anmeldekonstanten, Aktionen und Reduzierer
Reduzierer zu store.js hinzufügen
Verwenden Sie die Aktion in SigninScreen.js
Registrierungsbildschirm erstellen
Erstellen Sie eine API für /api/users/register
Fügen Sie einen neuen Benutzer in die Datenbank ein
Benutzerinformationen und Token zurückgeben
RegisterScreen erstellen
Felder hinzufügen
Stilfelder
Bildschirm zu App.js hinzufügen
Erstellen Sie eine Registeraktion und einen Reduzierer
Überprüfen Sie die Validierung und erstellen Sie einen Benutzer
Versandbildschirm erstellen
Erstellen Sie die CheckoutSteps.js-Komponente
Versandfelder erstellen
Implementieren Sie Versandkonstanten, Aktionen und Reduzierungen
Zahlungsbildschirm erstellen
Zahlungsfelder erstellen
Implementieren Sie Versandkonstanten, Aktionen und Reduzierungen
Design-Bestellbildschirm
Zusammenfassungsfelder für Entwurfsaufträge
Design-Order-Aktion
Erstellen Sie eine Place Order API
createOrder-API
orderModel erstellen
orderRouter erstellen
Post-Order-Route erstellen
Implementieren Sie die PlaceOrder-Aktion
Klicken Sie auf die Schaltfläche „Bestellung aufgeben“.
Erstellen Sie Reihenfolgekonstanten, Aktionen und Reduzierer
Bildschirm „Bestellung erstellen“.
Auftrags-API für /api/orders/:id erstellen
Erstellen Sie OrderScreen.js
Aktion „Bestelldetails versenden“ in useEffect
Daten mit useSelector laden
Zeigen Sie Daten wie den Bestellbildschirm an
Bestelldetails erstellen: Konstante, Aktion und Reduzierer
Schaltfläche „PayPal hinzufügen“ hinzufügen
Holen Sie sich die Kunden-ID von PayPal
Legen Sie es in der .env-Datei fest
Routenformular erstellen /api/paypal/clientId
Erstellen Sie getPaypalClientID in api.js
Fügen Sie das Paypal-Checkout-Skript in OrderScreen.js hinzu
Paypal-Button anzeigen
Implementieren Sie die Auftragszahlung
Bestellung nach Zahlungseingang aktualisieren
Erstellen Sie payOrder in api.js
Erstellen Sie eine Route für /:id/pay in orderRouter.js
Nach Zahlungsauftrag erneut rendern
Bestellverlauf anzeigen
Erstellen Sie eine API für Kundenaufträge
Erstellen Sie eine API für getMyOrders
Bestellungen im Profilbildschirm anzeigen
Stilaufträge
Benutzerprofil anzeigen
Benutzerdetails-API erstellen
Benutzerinformationen anzeigen
Benutzerprofil aktualisieren
Erstellen Sie eine Benutzeraktualisierungs-API
Benutzerinformationen aktualisieren
Admin-Ansicht erstellen
Erstellen Sie ein Admin-Menü
Erstellen Sie Admin-Middleware im Backend
Erstellen Sie eine Admin-Route im Frontend
Produkte auflisten
Bildschirm „Produktliste erstellen“.
Fügen Sie dem Lager ein Reduzierstück hinzu
Produkte auf dem Bildschirm anzeigen
Produkt erstellen
Build Produkt-API erstellen
Erstellen Sie die Schaltfläche „Produkt erstellen“.
Produkt definieren, Konstante, Aktion und Reduzierer erstellen
Verwenden Sie die Aktion im Produktlistenbildschirm
Bildschirm „Produkt bearbeiten“ erstellen
Bearbeitungsbildschirm erstellen
Zustand definieren
Felder erstellen
Produktdetails laden
zu Routen hinzufügen
Produkt aktualisieren
Definieren Sie die Update-API
Definieren Sie Produktaktualisierungskonstante, Aktion und Reduzierer
Verwenden Sie die Aktion im Produktbearbeitungsbildschirm
Produktbild hochladen
npm installiere Multer
Upload-Router definieren
Erstellen Sie einen Upload-Ordner
Behandeln Sie das Frontend
Produkt löschen
Erstellen Sie eine Lösch-API im Backend
Erstellen Sie Löschkonstanten, Aktionen und Reduzierer
Verwenden Sie es im Produktlistenbildschirm
Bestellungen auflisten
Bestelllisten-API erstellen
Bestelllistenbildschirm erstellen
Fügen Sie dem Lager ein Reduzierstück hinzu
Produkte auf dem Bildschirm anzeigen
Auftrag löschen 2. Aktion zum Löschen von Aufträgen und Reduzierung erstellen 3. Aktion zum Löschen von Aufträgen zur Auftragsliste hinzufügen
Bestellung ausliefern
Erstellen Sie Konstanten, Aktionen und Reduzierungen für die Lieferreihenfolge
Fügen Sie die Aktion „Bestellung liefern“ zum Bildschirm „Bestelldetails“ hinzu
Auf Heroku veröffentlichen
Erstellen Sie ein Git-Repository
Erstellen Sie ein Heroku-Konto
Installieren Sie die Heroku-CLI
Heroku-Login
Heroku-Apps: Amazon erstellen
Bearbeiten Sie package.json für das Build-Skript
Profildatei erstellen
Erstellen Sie eine Mongodb-Atlas-Datenbank
Legen Sie die Datenbankverbindung in Heroku-Env-Variablen fest
Commit und Push
Benutzer auflisten
Erstellen Sie eine API für Listenbenutzer
Bildschirm „Benutzerliste erstellen“.
Bestelldetails erstellen: Konstante, Aktion und Reduzierer
Benutzer löschen
Erstellen Sie eine API zum Löschen von Benutzern
Bestelldetails erstellen: Konstante, Aktion und Reduzierer
Verwenden Sie die Aktion in UserListScreen
Benutzer bearbeiten
Build-API für Update-Benutzer
Erstellen Sie eine Benutzeroberfläche für den Bearbeitungsbildschirm
Implementieren Sie die Verkäuferansicht
Verkäufermenü hinzufügen
Verkäuferroute erstellen
Produkte für den Verkäufer auflisten
Bestellungen für den Verkäufer auflisten
Verkäufer zur Produktliste und zum Detailbildschirm hinzufügen
Verkäuferseite erstellen
Verkäuferseite erstellen
Produktkomponente und Produktbildschirm aktualisieren
Produktrouten aktualisieren
Top-Seller-Karussell hinzufügen
Installieren Sie das Reaktionskarussell
Umsetzung von Aktionen und Reduzierungen für Top-Seller
Verwenden Sie das Reaktionskarussell mit Daten auf dem Startbildschirm
Erzwingen Sie die Bestellung von Artikeln bei einem Verkäufer
Aktualisieren Sie die addToCart-Aktion, um bei einer Bestellung bei einem Verkäufer zu kaufen
Erstellen Sie ein Suchfeld und einen Suchbildschirm
Erstellen Sie eine Suchleiste in Header.js
Stil hinzufügen
Behandeln Sie das Absendeformular
Bearbeiten Sie die Parse-URL, um die Abfragezeichenfolge zu erhalten
Aktualisieren Sie die Produktlisten-API für die Suche nach Namen
Erweiterten Suchfilter hinzufügen 1. Nach Kategorie filtern 2. Nach Preisspanne filtern 3. Nach Durchschnittsbewertung filtern
Vollständige erweiterte Suche 1. Nach Preis filtern 2. Nach Bewertung filtern 3. Nach Preis, Bewertung, ... sortieren
Bewerten und bewerten Sie Produkte. 1. Bewerten Sie Produkte. 2. Erstellen Sie Aktionen und Reduzierungen
Wählen Sie Adresse auf Google Map. 1. Erstellen Sie Google Map-Anmeldeinformationen. 2. Aktualisieren Sie die .env-Datei mit dem Google API-Schlüssel. 3. Erstellen Sie eine API, um die Google API an das Frontend zu senden. 4. Erstellen Sie einen Kartenbildschirm. 5. Rufen Sie die Google API ab. 6. GetUserLocation 7. Installieren Sie @react- google-maps/api 8. Verwenden Sie es im Versandbildschirm. 9. Wenden Sie die Karte auf den Checkout-Bildschirm an
BugFix: Lokale Ausführung ohne Probleme
Fügen Sie Verkäuferinformationen zu data.js hinzu
Seed-Produktdaten mit Administratorinformationen als Verkäufer
Korrigieren Sie isSeller und isAdmin beim Update-Benutzer
Entfernen Sie die Authentifizierung aus den Benutzerdetails
Implementieren Sie die Paginierung
Paginierung zum Produktrouter im Backend hinzufügen
Wenden Sie die Seitenzahl auf Aktionen und Reduzierungen im Frontend an
Seitenzahlen im Suchbildschirm anzeigen
E-Mail-Bestellbestätigung per Mailgun 1. Mailgun-Konto erstellen 2. Ihre Domain zu Mailgun hinzufügen und überprüfen 3. Mailgun-js installieren 4. API-Schlüssel in der ENV-Datei festlegen 5. Zahlungsauftrag in orderRouter ändern 6. E-Mail senden
Dashboard-Bildschirm erstellen
Erstellen Sie Diagrammdaten im Backend
Bildschirm „Diagramm erstellen“.
Implementieren Sie Live-Chat mit Kunden
Verwenden Sie Socket Io, um ein Backend zu erstellen
Erstellen Sie eine Chatbox-Komponente
Support-Bildschirm erstellen
Upgrade auf React 17, Router 6, Mongoose 6
Backend
Deinstallieren und installieren Sie alle Pakete
Optionen in Mongoose Connect entfernen
Wickeln Sie Mailgun in Try Catch in OrderRouter ein
Frontend
Deinstallieren und installieren Sie alle Pakete
Im Suchfeld entfernen
Alles einpacken
durch <Route element={}> ersetzen
Ersetzen Sie durch <Route element={ }/>
ersetzen und auch
Aktualisieren Sie PrivateRoute, AdminRoute und SellerRoute
Ersetzen Sie push() durch navigation() von useNavigate
Ersetzen Sie props.match.params.id durch const params = useParams();
Ersetzen Sie props.location.search durch const { search } = useLocation(); und URLSearchParams
Ersetzen Sie props.match.path durch const {pathname} = useLocation();
Setzen Sie userInfo in useEffect in ChatBox, SupportScreen