歡迎來到我的 React 和 Node 教學課程,建立一個功能齊全的電子商務網站,就像亞馬遜一樣。打開程式碼編輯器,在接下來的幾個小時內跟著我使用 MERN 堆疊(MongoDB、ExpressJS、React 和 Node.JS)建立電子商務網站。
Heroku:https://react-amazona.herokuapp.com
Heroku 鏡像:https://react-amazona-mirror.herokuapp.com
HTML5 與 CSS3:語意元素、CSS 網格、Flexbox
React:元件、道具、事件、鉤子、路由器、Axios
Redux:儲存、減速器、操作
Node & Express:Web API、正文解析器、檔案上傳、JWT
MongoDB:貓鼬、聚合
開發:ESLint、Babel、Git、Github、
部署:Heroku
觀看 React 和 Node 教學課程
$ git clone [email protected]:basir/amazona.git $ cd amazona
本地 MongoDB
從這裡安裝
在根資料夾中建立 .env 檔
設定 MONGODB_URL=mongodb://localhost/amazona
阿特拉斯雲端 MongoDB
在 https://cloud.mongodb.com 建立資料庫
在根資料夾中建立 .env 檔
設定 MONGODB_URL=mongodb+srv://your-db-connection
$ npm install $ npm start
# open new terminal $ cd frontend $ npm install $ npm start
在 Chrome 上運行:http://localhost:5000/api/users/seed
它會傳回管理員電子郵件和密碼
在 chrome 上運行:http://localhost:5000/api/products/seed
它創建了 6 個樣品產品
執行http://localhost:3000/signin
輸入管理員電子郵件和密碼,然後按一下登入
Q&A:https://webacademy.pro/amazona
聯絡導師:Basir
本課程簡介
你將建造什麼
你將學到什麼
誰是觀眾
安裝工具
程式碼編輯器
網頁瀏覽器
VS 程式碼擴充
網站模板
創建亞馬遜資料夾
建立模板資料夾
建立索引.html
新增預設 HTML 程式碼
連結到 style.css
建立頁首、正文和頁尾
風格元素
展示產品
建立產品分區
新增產品屬性
添加連結、圖像、名稱和價格
創建反應應用程式
npx create-react-app 前端
npm 啟動
刪除未使用的文件
將index.html內容複製到App.js
將 style.css 內容複製到 index.css
將類別替換為類別名
在 Github 上分享程式碼
初始化git倉庫
提交更改
建立github帳戶
在 github 上建立倉庫
將本地倉庫連接到 github 倉庫
將變更推送到 github
創建評級和產品組件
建立元件/Rating.js
建立div.評級
樣式 div. rating、跨度和最後跨度
建立產品組件
使用評級組件
建構產品螢幕
安裝react-router-dom
使用 BrowserRouter 和主螢幕路由
建立 HomeScreen.js
在那裡添加產品列表代碼
創建 ProductScreen.js
新增從產品詳細資訊到 App.js 的新路由
為產品圖片、資訊和操作建立 3 欄
建立 Node.JS 伺服器
在根資料夾中運行 npm init
更新package.json設定類型:模組
將 .js 加入導入中
npm 安裝快速
建立伺服器.js
新增啟動指令作為node backend/server.js
需要快遞
為/返回後端建立路由已準備就緒。
將 products.js 從前端移到後端
為 /api/products 建立路由
退貨產品
運行 npm 啟動
從後端載入產品
編輯 HomeScreen.js
定義產品、裝載和錯誤。
建立使用效果
定義 async fetchData 並呼叫它
安裝 axios
從/api/products取得數據
在列表中顯示它們
建立載入元件
建立訊息框組件
在主螢幕中使用它們
安裝 ESlint 進行程式碼檢查
安裝 VSCode eslint 擴充
npm install -D eslint
運行 ./node_modules/.bin/eslint --init
創建./frontend/.env
新增 SKIP_PREFLIGHT_CHECK=true
將 Redux 加入主畫面
npm install redux 反應 Redux
建立store.js
initState= {產品:[]}
減速器 = (狀態, 操作) => 開關 LOAD_PRODUCTS: {產品: action.payload}
匯出預設createStore(reducer, initState)
編輯 HomeScreen.js
商店名稱 = useSelector(state=>state.products)
const 調度 = useDispatch()
useEffect(()=>dispatch({類型:LOAD_PRODUCTS,有效負載:資料})
將商店加入index.js
將 Redux 加入產品螢幕
建立產品詳細資訊常數、操作和減速器
將reducer加入store.js
在 ProductScreen.js 中使用操作
新增 /api/product/:id 到後端 api
處理“加入購物車”按鈕
在 ProductScreen.js 中處理“添加到購物車”
建立 CartScreen.js
實施「加入購物車」操作
建立 addToCart 常數、操作和化簡器
將reducer加入store.js
在 CartScreen.js 中使用操作
渲染 cartItems.length
建構購物車螢幕
為購物車商品和購物車操作建立 2 列
cartItems.length === 0 ?購物車是空的
顯示商品圖片、名稱、數量和價格
前往結帳按鈕
實施從購物車中刪除操作
實施從購物車刪除操作
創建removeFromCart常數、動作和reducers
將reducer加入store.js
在 CartScreen.js 中使用操作
在 MongoDB 中建立範例用戶
npm 安裝貓鼬
連接到 mongodb
建立config.js
npm 安裝 dotenv
匯出 MONGODB_URL
建立模型/userModel.js
建立 userSchema 和 userModel
建立用戶路由
種子樣本數據
在 MongoDB 中建立範例產品
建立模型/productModel.js
創建產品架構和產品模型
建立產品路線
種子樣本數據
建立登入後端
建立/登入 api
檢查電子郵件和密碼
產生令牌
安裝 json 網路令牌
安裝dotenv
返回令牌和數據
使用郵差測試它
設計登入畫面
建立登入畫面
渲染電子郵件和密碼字段
建立登入常數、操作和減速器
根據使用者登入更新標題
實施登入操作
建立登入常數、操作和減速器
將reducer加入store.js
在 SigninScreen.js 中使用操作
建立註冊畫面
為 /api/users/register 建立 API
將新用戶插入資料庫
返回用戶資訊和token
建立註冊畫面
新增字段
樣式字段
將螢幕加入 App.js
建立註冊動作和減速器
檢查驗證並建立用戶
建立出貨螢幕
建立 CheckoutSteps.js 元件
建立運輸字段
實施運輸常量、行動和減速器
建立付款畫面
建立付款字段
實施運輸常量、行動和減速器
設計下訂單螢幕
設計訂單匯總字段
設計訂單動作
建立下訂單 API
建立訂單 API
建立訂單模型
建立訂單路由器
建立後訂單路線
實施下訂單操作
處理下單按鈕點擊
建立下單常數、操作和減速器
建立訂單螢幕
為 /api/orders/:id 建立訂單 api
建立 OrderScreen.js
useEffect 中的調度訂單詳細資訊操作
使用 useSelector 加載數據
顯示數據,如下訂單螢幕
建立訂單詳細資訊常數、操作和減速器
新增貝寶按鈕
從 paypal 取得客戶 ID
在 .env 檔案中設置
建立路由表單 /api/paypal/clientId
在 api.js 中建立 getPaypalClientID
在 OrderScreen.js 中新增 paypal 結帳腳本
顯示貝寶按鈕
實施訂單支付
付款後更新訂單
在 api.js 中建立 payOrder
在 orderRouter.js 中為 /:id/pay 建立路由
付款訂單後重新渲染
顯示訂單歷史記錄
建立客戶訂單API
為 getMyOrders 建立 api
在個人資料畫面中顯示訂單
款式訂單
顯示用戶個人資料
建立使用者詳細資訊 api
顯示使用者資訊
更新使用者資料
建立用戶更新API
更新用戶資訊
建立管理視圖
建立管理選單
在後端建立管理中介軟體
在前端創建管理路由
列出產品
建立產品清單螢幕
添加減速器到存儲
在螢幕上顯示產品
創建產品
建構建立產品API
建立創建產品按鈕
定義產品創建常數、動作和減速器
使用產品清單畫面中的操作
建立產品編輯螢幕
建立編輯畫面
定義狀態
建立字段
加載產品詳細信息
新增到路線
更新產品
定義更新API
定義產品更新常數、動作和減速器
使用產品編輯畫面中的操作
上傳商品圖片
npm 安裝 multer
定義上傳路由器
建立上傳資料夾
處理前端
刪除產品
在後端創建刪除api
建立刪除常數、操作和化簡器
在產品清單畫面中使用它
列出訂單
建立訂單清單 API
建立訂單清單螢幕
添加減速器到存儲
在螢幕上顯示產品
刪除訂單 2. 建立刪除訂單操作和減速器 3. 將訂單刪除操作新增至訂單列表
交付訂單
為交付訂單建立常數、動作和減速器
將訂單交付作業新增至訂單詳細資訊螢幕
發佈到 Heroku
建立 git 儲存庫
建立 Heroku 帳戶
安裝 Heroku CLI
登入
heroku 應用程式:創建亞馬遜
編輯建置腳本的 package.json
建立過程文件
建立mongodb atlas資料庫
在heroku環境變數中設定資料庫連接
提交並推動
列出用戶
為列表使用者建構 api
建立使用者清單螢幕
建立訂單詳細資訊常數、操作和減速器
刪除用戶
為刪除用戶建立API
建立訂單詳細資訊常數、操作和減速器
在 UserListScreen 中使用操作
編輯使用者
為更新使用者建構 api
建立編輯畫面 UI
實施賣家視圖
新增賣家選單
建立賣家路線
為賣家列出商品
列出賣家的訂單
將賣家新增至產品清單和詳細資訊螢幕
建立賣家頁面
建立賣家頁面
更新產品組件和產品螢幕
更新產品路線
添加暢銷商品輪播
安裝反應輪播
為暢銷產品實施行動和減少措施
在主畫面中對資料使用反應輪播
強制向一位賣家訂購商品
更新 addToCart 操作以按訂單向一位賣家購買
建立搜尋框和搜尋螢幕
在 Header.js 中建立搜尋欄
新增樣式
處理提交表單
編輯解析 url 以取得查詢字串
更新產品列表 API 以按名稱搜尋
新增進階搜尋篩選器 1. 依類別篩選 2. 依價格範圍篩選 3. 依平均評分篩選
完成進階搜尋 1. 依價格過濾 2. 依評級過濾 3. 依價格、評級等排序
對產品進行評分和檢討 1. 對產品進行評分 2. 創建操作和減速器
選擇Google 地圖上的位址1. 建立google 地圖憑證2. 使用Google Api 金鑰更新.env 檔案3. 建立api 以將google api 傳送到前端4. 建立地圖畫面5. 取得google api 6. getUserLocation 7. 安裝@react- google-maps/api 8. 在出貨畫面中使用它 9. 將地圖套用到結帳螢幕
錯誤修復:本地運行沒有問題
將賣家資訊加入 data.js
種子產品資料與管理員資訊作為賣家
修復更新用戶的 isSeller 和 isAdmin
從使用者詳細資料中刪除身份驗證
實施分頁
在後端的產品路由器中新增分頁
將頁碼應用於前端的操作和化簡器
在搜尋畫面中顯示頁碼
透過mailgun 透過電子郵件發送訂單收據1. 建立mailgun 帳戶2. 新增並驗證您的網域到mailgun 3. 安裝mailgun-js 4. 在env 檔案中設定api 金鑰5. 在orderRouter 中更改付款訂單6. 傳送電子郵件
建立儀表板螢幕
在背景建立圖表數據
建立圖表螢幕
與客戶實施即時聊天
使用socket io創建後端
建立聊天框組件
創建支援螢幕
升級到 React 17、Router 6、Mongoose 6
後端
解除安裝並安裝所有軟體包
刪除 mongoose connect 中的選項
將 mailgun 包裝在 orderRouter 中的 try catch 中
前端
解除安裝並安裝所有軟體包
在搜尋框中刪除
全部包起來
替換為 <Route element={}>
替換為 <Route element={ }/>
替換並且也
更新 PrivateRoute、AdminRoute 和 SellerRoute
將useNavigate 中的push() 替換為navigate()
將 props.match.params.id 替換為 const params = useParams();
將 props.location.search 替換為 const { search } = useLocation();和 URLSearchParams
將 props.match.path 替換為 const {pathname} = useLocation();
將 userInfo 放入 ChatBox、SupportScreen 中的 useEffect 中