Selamat datang di tutorial React dan Node saya untuk membangun situs web e-commerce yang berfungsi penuh persis seperti amazon. Buka editor kode Anda dan ikuti saya selama beberapa jam berikutnya untuk membangun situs web e-niaga menggunakan tumpukan MERN (MongoDB, ExpressJS, React, dan Node.JS).
Heroku: https://react-amazona.herokuapp.com
Cermin Heroku: https://react-amazona-mirror.herokuapp.com
HTML5 dan CSS3: Elemen Semantik, CSS Grid, Flexbox
Bereaksi: Komponen, Props, Event, Hooks, Router, Axios
Redux: Penyimpanan, Pereduksi, Tindakan
Node & Ekspres: API Web, Body Parser, Unggah File, JWT
MongoDB: Luwak, Agregasi
Pengembangan: ESLint, Babel, Git, Github,
Penerapan: Heroku
Tonton Tutorial React & Node
$ git clone [email protected]:basir/amazona.git $ cd amazona
MongoDB lokal
Instal dari sini
Buat file .env di folder root
Setel MONGODB_URL=mongodb://localhost/amazona
Atlas Cloud MongoDB
Buat database di https://cloud.mongodb.com
Buat file .env di folder root
Setel MONGODB_URL=mongodb+srv://koneksi-db-Anda
$ npm install $ npm start
# open new terminal $ cd frontend $ npm install $ npm start
Jalankan ini di chrome: http://localhost:5000/api/users/seed
Ini mengembalikan email admin dan kata sandi
Jalankan ini di chrome: http://localhost:5000/api/products/seed
Ini menciptakan 6 produk sampel
Jalankan http://localhost:3000/signin
Masukkan email admin dan kata sandi dan klik masuk
T/J: https://webacademy.pro/amazona
Hubungi Instruktur: Basir
Pengantar kursus ini
apa yang akan kamu bangun
apa yang akan kamu pelajari
siapa penontonnya
Instal Alat
Editor Kode
Peramban Web
Ekstensi Kode VS
Templat Situs Web
Buat folder amazona
membuat folder templat
buat indeks.html
tambahkan kode HTML default
tautan ke style.css
membuat header, main dan footer
elemen gaya
Tampilkan Produk
membuat div produk
menambahkan atribut produk
tambahkan tautan, gambar, nama dan harga
Buat Aplikasi Bereaksi
npx buat-reaksi-aplikasi frontend
npm mulai
Hapus file yang tidak digunakan
salin konten index.html ke App.js
salin konten style.css ke index.css
ganti kelas dengan className
Bagikan Kode Di Github
Inisialisasi repositori git
Lakukan perubahan
Buat akun github
Buat repo di github
sambungkan repo lokal ke repo github
Dorong perubahan ke github
Buat Rating dan Komponen Produk
membuat komponen/Rating.js
buat div.rating
div.rating gaya, rentang dan rentang terakhir
Buat komponen Produk
Gunakan komponen Peringkat
Bangun Layar Produk
Instal reaksi-router-dom
Gunakan BrowserRouter dan Rute untuk Layar Beranda
Buat HomeScreen.js
Tambahkan kode daftar produk di sana
Buat ProductScreen.js
Tambahkan Rute baru dari detail produk ke App.js
Buat 3 kolom untuk gambar produk, info dan tindakan
Buat Server Node.JS
jalankan npm init di folder root
Perbarui tipe set package.json: modul
Tambahkan .js ke impor
npm instal ekspres
buat server.js
tambahkan perintah start sebagai node backend/server.js
memerlukan ekspres
buat rute untuk/kembalikan backend sudah siap.
pindahkan product.js dari frontend ke backend
buat rute untuk /api/products
mengembalikan produk
jalankan npm mulai
Muat Produk Dari Backend
edit BerandaScreen.js
mendefinisikan produk, memuat dan kesalahan.
buat useEffect
tentukan async FetchData dan beri nama
instal aksio
dapatkan data dari /api/products
tunjukkan mereka dalam daftar
membuat Komponen Pemuatan
membuat Komponen Kotak Pesan
menggunakannya di HomeScreen
Instal ESlint Untuk Kode Linting
instal ekstensi eslint VSCode
npm instal -D eslint
jalankan ./node_modules/.bin/eslint --init
Buat ./frontend/.env
Tambahkan SKIP_PREFLIGHT_CHECK=benar
Tambahkan Redux ke Layar Utama
npm instal redux reaksi-redux
Buat store.js
initState= {produk:[]}
peredam = (status, tindakan) => ganti LOAD_products: {produk: action.payload}
ekspor createStore default (peredam, initState)
Sunting BerandaScreen.js
Namatoko = useSelector(negara bagian=>negara bagian.produk)
const pengiriman = gunakanDispatch()
useEffect(()=>dispatch({type: LOAD_productS, payload: data})
Tambahkan toko ke index.js
Tambahkan Redux ke Layar Produk
membuat konstanta, tindakan, dan reduksi detail produk
tambahkan peredam ke store.js
gunakan tindakan di ProductScreen.js
tambahkan /api/product/:id ke api backend
Tangani Tombol Tambahkan Ke Keranjang
Tangani Tambahkan Ke Keranjang di ProductScreen.js
buat CartScreen.js
Terapkan Tindakan Tambahkan ke Keranjang
buat konstanta, tindakan, dan reduksi addToCart
tambahkan peredam ke store.js
gunakan tindakan di CartScreen.js
render cartItems.length
Bangun Layar Keranjang
buat 2 kolom untuk item keranjang dan tindakan keranjang
cartItems.panjang === 0 ? keranjang kosong
tampilkan gambar barang, nama, jumlah dan harga
Lanjutkan ke tombol Checkout
Terapkan tindakan hapus dari keranjang
Menerapkan Tindakan Hapus Dari Keranjang
buat konstanta, tindakan, dan reduksi hapusFromCart
tambahkan peredam ke store.js
gunakan tindakan di CartScreen.js
Buat Pengguna Sampel Di MongoDB
npm instal luwak
terhubung ke mongodb
buat config.js
npm instal dotenv
ekspor MONGODB_URL
membuat model/userModel.js
buat skema pengguna dan model pengguna
buat rute pengguna
Data sampel benih
Buat Contoh Produk Di MongoDB
membuat model/productModel.js
membuat productSchema dan productModel
buat rute produk
Data sampel benih
Buat Backend Masuk
buat /masuk api
periksa email dan kata sandi
menghasilkan token
instal token web json
instal dotenv
mengembalikan token dan data
mengujinya menggunakan tukang pos
Desain Layar Masuk
buat Layar Masuk
render bidang email dan kata sandi
buat konstanta masuk, tindakan, dan reduksi
Perbarui Header berdasarkan login pengguna
Terapkan Tindakan Masuk
buat konstanta masuk, tindakan, dan reduksi
tambahkan peredam ke store.js
gunakan tindakan di SigninScreen.js
Buat Layar Daftar
buat API untuk /api/users/register
masukkan pengguna baru ke database
mengembalikan info pengguna dan token
membuat Daftar Layar
Tambahkan bidang
Bidang gaya
Tambahkan layar ke App.js
membuat tindakan register dan peredam
periksa validasi dan buat pengguna
Buat Layar Pengiriman
buat komponen CheckoutSteps.js
membuat bidang pengiriman
menerapkan konstanta pengiriman, tindakan, dan reduksi
Buat Layar Pembayaran
membuat bidang pembayaran
menerapkan konstanta pengiriman, tindakan, dan reduksi
Layar Pemesanan Tempat Desain
bidang ringkasan pesanan desain
tindakan pesanan desain
Buat API Pemesanan Tempat
buatOrder api
membuat model pesanan
buat orderRouter
membuat rute pasca pesanan
Menerapkan Tindakan PlaceOrder
menangani klik tombol pemesanan tempat
membuat konstanta urutan tempat, tindakan, dan peredam
Buat Layar Pesanan
membangun api pesanan untuk /api/orders/:id
buat OrderScreen.js
mengirimkan tindakan detail pesanan di useEffect
memuat data dengan useSelector
tampilkan data seperti layar pemesanan tempat
buat detail pesanan konstan, tindakan, dan peredam
Tambahkan Tombol PayPal
dapatkan id klien dari paypal
atur dalam file .env
buat formulir rute /api/paypal/clientId
buat getPaypalClientID di api.js
tambahkan skrip checkout paypal di OrderScreen.js
tampilkan tombol paypal
Menerapkan Pembayaran Pesanan
perbarui pesanan setelah pembayaran
buat payOrder di api.js
buat rute untuk /:id/pay di orderRouter.js
render ulang setelah perintah pembayaran
Tampilkan Riwayat Pesanan
buat api pesanan pelanggan
buat api untuk getMyOrders
tampilkan pesanan di layar profil
pesanan gaya
Tampilkan Profil Pengguna
buat api detail pengguna
menampilkan informasi pengguna
Perbarui Profil Pengguna
buat api pembaruan pengguna
memperbarui informasi pengguna
Buat Tampilan Admin
Buat Menu Admin
Buat Admin Middleware di Backend
Buat Rute Admin di Frontend
Daftar Produk
Buat Layar Daftar Produk
Tambahkan peredam untuk disimpan
menampilkan produk di layar
Buat Produk
membangun membuat api produk
buat tombol Buat Produk
mendefinisikan produk menciptakan konstanta, tindakan dan peredam
gunakan tindakan di Layar Daftar Produk
Buat Layar Edit Produk
buat layar edit
mendefinisikan negara
membuat bidang
memuat detail produk
tambahkan ke rute
Perbarui Produk
tentukan api pembaruan
tentukan konstanta pembaruan produk, tindakan, dan peredam
gunakan tindakan di Layar Edit Produk
Unggah Gambar Produk
npm instal multer
tentukan router pengunggah
buat folder unggahan
Tangani bagian depan
Hapus Produk
buat hapus api di backend
buat hapus konstanta, tindakan, dan peredam
gunakan di layar daftar produk
Daftar Pesanan
buat api daftar pesanan
membuat Layar Daftar Pesanan
Tambahkan peredam untuk disimpan
menampilkan produk di layar
Hapus Pesanan 2. buat tindakan hapus pesanan dan peredam 3. tambahkan tindakan hapus pesanan ke daftar pesanan
Mengirimkan Pesanan
buat konstanta, tindakan, dan reduksi untuk mengirimkan pesanan
tambahkan tindakan pengiriman pesanan ke layar detail pesanan
Publikasikan Ke Heroku
Buat repositori git
Buat akun heroku
instal Heroku CLI
login pahlawanku
aplikasi heroku: buat amazona
Edit package.json untuk skrip build
Buat Profil
Buat database atlas mongodb
Atur koneksi database dalam variabel heroku env
Berkomitmen dan dorong
Daftar Pengguna
membangun api untuk pengguna daftar
Buat Layar Daftar Pengguna
buat detail pesanan konstan, tindakan, dan peredam
Hapus Pengguna
membangun api untuk menghapus pengguna
buat detail pesanan konstan, tindakan, dan peredam
Gunakan tindakan di UserListScreen
Sunting Pengguna
membangun api untuk pengguna pembaruan
buat UI layar edit
Menerapkan Tampilan Penjual
tambahkan menu penjual
membuat rute penjual
daftar produk untuk penjual
daftar pesanan untuk penjual
tambahkan Penjual ke Daftar Produk dan Layar Detail
Buat Halaman Penjual
buat halaman penjual
perbarui komponen produk dan layar produk
memperbarui rute produk
Tambahkan Korsel Penjual Teratas
instal reaksi korsel
menerapkan tindakan dan reduksi untuk penjual teratas
gunakan reaksi carousel dengan data di Layar Utama
Paksa Barang Pesanan Dari Satu Penjual
perbarui tindakan addToCart untuk membeli dari satu penjual dalam satu pesanan
Buat Kotak Pencarian dan Layar Pencarian
buat bilah pencarian di Header.js
menambahkan gaya
menangani formulir pengiriman
edit parse url untuk mendapatkan string kueri
perbarui api daftar produk untuk pencarian berdasarkan nama
Tambahkan Filter Pencarian Lanjutan 1. filter berdasarkan kategori 2. filter berdasarkan kisaran harga 3. filter berdasarkan peringkat rata-rata
Selesaikan Pencarian Lanjutan 1. filter berdasarkan harga 2. filter berdasarkan peringkat 3. urutkan berdasarkan harga, peringkat, ...
Nilai dan Tinjau Produk 1. menilai produk 2. membuat tindakan dan reduksi
Pilih Alamat Di Google Map 1. buat kredensial google map 2. perbarui file .env dengan Google Api Key 3. buat api untuk mengirim google api ke frontend 4. buat layar peta 5. ambil google api 6. getUserLocation 7. instal @react- google-maps/api 8. gunakan di layar pengiriman 9. terapkan peta ke layar checkout
Perbaikan Bug: Berjalan Secara Lokal Tanpa Masalah
tambahkan info penjual ke data.js
data produk unggulan dengan info admin sebagai penjual
memperbaiki isSeller dan isAdmin pada pengguna pembaruan
hapus autentikasi dari detail pengguna
Menerapkan Paginasi
tambahkan pagination ke router produk di backend
terapkan nomor halaman ke tindakan dan reduksi di frontend
tampilkan nomor halaman di layar pencarian
Tanda terima pesanan email melalui mailgun 1. buat akun mailgun 2. tambahkan dan verifikasi domain Anda ke mailgun 3. instal mailgun-js 4. atur kunci api di file env 5. ubah perintah pembayaran di orderRouter 6. kirim email ke
Buat Layar Dasbor
Buat data bagan di backend
Layar Bangun Bagan
Terapkan Obrolan Langsung Dengan Pelanggan
gunakan soket io untuk membuat backend
membuat komponen kotak obrolan
buat layar dukungan
Tingkatkan Ke React 17, Router 6, Mongoose 6
Bagian belakang
Copot dan instal semua paket
hapus opsi di koneksi luwak
bungkus mailgun di coba tangkap di orderRouter
Bagian depan
Copot dan instal semua paket
hapus di kotak pencarian
bungkus semuanya
ganti dengan <Route element={}>
ganti dengan <Elemen rute={ }/>
ganti dan juga
Perbarui PrivateRoute, AdminRoute, dan SellerRoute
ganti Push() dengan navigasi() dari useNavigate
ganti props.match.params.id dengan const params = useParams();
ganti props.location.search dengan const { search } = useLocation(); dan URLSearchParams
ganti props.match.path dengan const {pathname} = useLocation();
letakkan userInfo di useEffect di ChatBox, SupportScreen