欢迎来到我的 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
输入管理员电子邮件和密码,然后单击登录
问答: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 中