مرحبًا بك في البرنامج التعليمي React and Node الخاص بي لإنشاء موقع ويب للتجارة الإلكترونية كامل الوظائف تمامًا مثل أمازون. افتح محرر التعليمات البرمجية الخاص بك وتابعني خلال الساعات القادمة لإنشاء موقع ويب للتجارة الإلكترونية باستخدام مكدس MERN (MongoDB وExpressJS وReact وNode.JS).
هيروكو: https://react-amazona.herokuapp.com
مرآة هيروكو: https://react-amazona-mirror.herokuapp.com
HTML5 وCSS3: العناصر الدلالية، شبكة CSS، Flexbox
الرد: المكونات، الدعائم، الأحداث، الخطافات، جهاز التوجيه، أكسيوس
الإعادة: المتجر، المخفضات، الإجراءات
Node & Express: Web API، Body Parser، File Upload، JWT
MongoDB: النمس، التجميع
التطوير: ESLint، بابل، جيت، جيثب،
النشر: هيروكو
شاهد البرنامج التعليمي لـ 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
قم بتشغيل هذا على الكروم: http://localhost:5000/api/users/seed
يقوم بإرجاع البريد الإلكتروني للمشرف وكلمة المرور
قم بتشغيل هذا على الكروم: http://localhost:5000/api/products/seed
يقوم بإنشاء 6 عينات من المنتجات
قم بتشغيل http://localhost:3000/signin
أدخل البريد الإلكتروني وكلمة المرور للمشرف وانقر فوق تسجيل الدخول
سؤال/ج: https://webacademy.pro/amazona
اتصل بالمدرب: بصير
مقدمة لهذه الدورة
ما سوف تبنيه
ما سوف تتعلم
من هم الجماهير
أدوات التثبيت
محرر الكود
متصفح الويب
ملحق كود VS
قالب الموقع
إنشاء مجلد أمازون
إنشاء مجلد القالب
إنشاء ملف Index.html
إضافة كود HTML الافتراضي
رابط إلى style.css
إنشاء رأس، الرئيسي والتذييل
عناصر النمط
عرض المنتجات
قسم إنشاء المنتجات
إضافة سمات المنتج
إضافة الرابط والصورة والاسم والسعر
إنشاء تطبيق رد فعل
npx الواجهة الأمامية لتطبيق رد الفعل
بداية npm
إزالة الملفات غير المستخدمة
انسخ محتوى Index.html إلى App.js
انسخ محتوى style.css إلى ملف Index.css
استبدل الفئة بـ className
شارك الكود على جيثب
تهيئة مستودع git
ارتكاب التغييرات
إنشاء حساب جيثب
إنشاء الريبو على جيثب
ربط الريبو المحلي بجيثب الريبو
دفع التغييرات إلى جيثب
إنشاء التصنيف ومكون المنتج
إنشاء مكونات/Rating.js
إنشاء تصنيف div
أسلوب div. rating، والامتداد، والامتداد الأخير
إنشاء مكون المنتج
استخدم مكون التقييم
بناء شاشة المنتج
قم بتثبيت رد فعل جهاز التوجيه دوم
استخدم BrowserRouter وRoute للشاشة الرئيسية
إنشاء HomeScreen.js
أضف رمز قائمة المنتجات هناك
إنشاء ProductScreen.js
أضف مسارًا جديدًا من تفاصيل المنتج إلى App.js
قم بإنشاء 3 أعمدة لصورة المنتج والمعلومات والإجراءات
إنشاء خادم Node.JS
قم بتشغيل npm init في المجلد الجذر
تحديث package.json نوع المجموعة: الوحدة النمطية
أضف .js إلى الواردات
تثبيت npm السريع
إنشاء server.js
أضف أمر البدء كواجهة خلفية للعقدة/server.js
تتطلب صريحة
إنشاء مسار ل/ العودة الخلفية جاهزة.
نقل Products.js من الواجهة الأمامية إلى الواجهة الخلفية
إنشاء مسار لـ /api/products
إرجاع المنتجات
تشغيل بداية npm
تحميل المنتجات من الخلفية
تحرير HomeScreen.js
تحديد المنتجات والتحميل والخطأ.
إنشاء تأثير الاستخدام
قم بتعريف fetchData غير المتزامن واستدعائه
تثبيت أكسيوس
الحصول على البيانات من /api/products
أظهرهم في القائمة
إنشاء مكون التحميل
إنشاء مكون صندوق الرسائل
استخدامها في الشاشة الرئيسية
قم بتثبيت ESlint لفحص التعليمات البرمجية
تثبيت ملحق VSCode eslint
تثبيت npm -D eslint
تشغيل ./node_modules/.bin/eslint --init
قم بإنشاء ./frontend/.env
أضف SKIP_PREFLIGHT_CHECK=صحيح
أضف Redux إلى الشاشة الرئيسية
تثبيت npm ريدوكس رد فعل ريدوكس
إنشاء store.js
initState= {المنتجات:[]}
المخفض = (الحالة، الإجراء) => تبديل LOAD_PRODUCTS: {المنتجات: action.payload}
تصدير createStore الافتراضي (المخفض، initState)
تحرير HomeScreen.js
اسم المحل = useSelector(state=>state.products)
إرسال ثابت = useDispatch()
useEffect(()=>dispatch({type: LOAD_PRODUCTS, payload: data})
إضافة متجر إلى Index.js
إضافة Redux إلى شاشة المنتج
إنشاء تفاصيل المنتج والثوابت والإجراءات والمخفضات
إضافة المخفض إلى store.js
استخدم الإجراء في ProductScreen.js
أضف /api/product/:id إلى الواجهة الخلفية لواجهة برمجة التطبيقات
التعامل مع زر إضافة إلى عربة التسوق
تعامل مع الإضافة إلى عربة التسوق في ProductScreen.js
قم بإنشاء CartScreen.js
تنفيذ إجراء الإضافة إلى سلة التسوق
إنشاء ثوابت وإجراءات ومخفضات addToCart
إضافة المخفض إلى store.js
استخدم الإجراء في CartScreen.js
تقديم cartItems.length
بناء شاشة العربة
قم بإنشاء عمودين لعناصر سلة التسوق وإجراءات سلة التسوق
طول العربة === 0 ؟ العربة فارغة
إظهار صورة العنصر والاسم والكمية والسعر
انتقل إلى زر الخروج
تنفيذ إجراء الإزالة من سلة التسوق
تنفيذ إجراء الإزالة من سلة التسوق
إنشاء ثوابت وإجراءات ومخفضات لـ RemoveFromCart
إضافة المخفض إلى store.js
استخدم الإجراء في CartScreen.js
إنشاء عينة من المستخدمين في MongoDB
npm تثبيت النمس
الاتصال بمونجودب
إنشاء config.js
تثبيت npm dotenv
تصدير MONGODB_URL
إنشاء نماذج/userModel.js
إنشاء مخطط المستخدم ونموذج المستخدم
إنشاء مسار المستخدم
بيانات عينة البذور
إنشاء نماذج من المنتجات في MongoDB
إنشاء نماذج/productModel.js
إنشاء مخطط المنتج ونموذج المنتج
إنشاء مسار المنتج
بيانات عينة البذور
إنشاء الواجهة الخلفية لتسجيل الدخول
إنشاء / تسجيل الدخول API
التحقق من البريد الإلكتروني وكلمة المرور
توليد رمز مميز
تثبيت رمز الويب json
قم بتثبيت dotenv
رمز العودة والبيانات
اختباره باستخدام ساعي البريد
تصميم شاشة تسجيل الدخول
إنشاء شاشة تسجيل الدخول
تقديم حقول البريد الإلكتروني وكلمة المرور
إنشاء ثوابت وإجراءات ومخفضات تسجيل الدخول
تحديث الرأس بناءً على تسجيل دخول المستخدم
تنفيذ إجراء تسجيل الدخول
إنشاء ثوابت وإجراءات ومخفضات تسجيل الدخول
إضافة المخفض إلى store.js
استخدم الإجراء في SigninScreen.js
إنشاء شاشة التسجيل
إنشاء واجهة برمجة التطبيقات لـ /api/users/register
إدراج مستخدم جديد إلى قاعدة البيانات
إرجاع معلومات المستخدم والرمز المميز
إنشاء شاشة التسجيل
أضف الحقول
حقول النمط
إضافة شاشة إلى App.js
إنشاء إجراء التسجيل والمخفض
التحقق من التحقق من الصحة وإنشاء المستخدم
إنشاء شاشة الشحن
إنشاء مكون CheckoutSteps.js
إنشاء حقول الشحن
تنفيذ ثابت الشحن والإجراءات والمخفضات
إنشاء شاشة الدفع
إنشاء حقول الدفع
تنفيذ ثابت الشحن والإجراءات والمخفضات
تصميم شاشة ترتيب المكان
حقول ملخص أمر التصميم
عمل أمر التصميم
إنشاء واجهة برمجة تطبيقات طلب المكان
واجهة برمجة تطبيقات الطلب
إنشاء نموذج الطلب
إنشاء أمرRouter
إنشاء طريق آخر للطلب
تنفيذ إجراء PlaceOrder
التعامل مع زر وضع الطلب انقر
إنشاء ثوابت ترتيب المكان والفعل والمخفض
إنشاء شاشة الطلب
بناء واجهة برمجة تطبيقات الطلب لـ /api/orders/:id
إنشاء OrderScreen.js
إرسال تفاصيل الإجراء قيد الاستخدامEffect
تحميل البيانات باستخدام useSelector
إظهار البيانات مثل شاشة طلب المكان
إنشاء تفاصيل الطلب ثابتة، وإجراءات، ومخفضة
إضافة زر باي بال
الحصول على معرف العميل من باي بال
قم بتعيينه في ملف .env
إنشاء نموذج مسار /api/paypal/clientId
قم بإنشاء getPaypalClientID في api.js
إضافة البرنامج النصي الخروج باي بال في OrderScreen.js
إظهار زر باي بال
تنفيذ أمر الدفع
تحديث الطلب بعد الدفع
إنشاء payOrder في api.js
قم بإنشاء مسار لـ /:id/pay في orderRouter.js
إعادة العرض بعد أمر الدفع
عرض سجل الطلبات
إنشاء واجهة برمجة تطبيقات طلبات العملاء
إنشاء واجهة برمجة تطبيقات لـ getMyOrders
إظهار الطلبات في شاشة الملف الشخصي
أوامر النمط
عرض ملف تعريف المستخدم
إنشاء تفاصيل المستخدم API
إظهار معلومات المستخدم
تحديث ملف تعريف المستخدم
إنشاء واجهة برمجة تطبيقات تحديث المستخدم
تحديث معلومات المستخدم
إنشاء عرض المشرف
إنشاء قائمة المسؤول
إنشاء برنامج وسيط للإدارة في الواجهة الخلفية
إنشاء طريق المسؤول في الواجهة الأمامية
قائمة المنتجات
شاشة إنشاء قائمة المنتجات
أضف المخفض إلى المتجر
عرض المنتجات على الشاشة
إنشاء المنتج
بناء إنشاء واجهة برمجة تطبيقات المنتج
بناء زر إنشاء المنتج
تحديد المنتج، إنشاء ثابت، عمل ومخفض
استخدام الإجراء في شاشة قائمة المنتجات
إنشاء شاشة تحرير المنتج
إنشاء شاشة التحرير
تحديد الدولة
إنشاء الحقول
تحميل تفاصيل المنتج
إضافة إلى الطرق
تحديث المنتج
تحديد واجهة برمجة التطبيقات للتحديث
تحديد ثابت تحديث المنتج، والعمل، والمخفض
استخدم الإجراء في شاشة تحرير المنتج
تحميل صورة المنتج
تثبيت npm مولتر
تحديد جهاز التوجيه التحميل
إنشاء مجلد التحميلات
التعامل مع الواجهة الأمامية
حذف المنتج
إنشاء حذف API في الخلفية
إنشاء حذف الثوابت والعمل والمخفض
استخدامه في شاشة قائمة المنتجات
قائمة الطلبات
إنشاء قائمة الطلبات API
إنشاء شاشة قائمة الطلبات
أضف المخفض إلى المتجر
عرض المنتجات على الشاشة
حذف الطلب 2. إنشاء إجراء حذف الطلب والمخفض 3. إضافة إجراء حذف الطلب إلى قائمة الطلبات
تسليم الطلب
إنشاء إجراءات ثابتة ومخفضات لتسليم الطلب
إضافة طلب تسليم الإجراء إلى شاشة تفاصيل الطلب
النشر إلى Heroku
إنشاء مستودع جيت
إنشاء حساب هيروكو
تثبيت Heroku CLI
تسجيل الدخول هيروكو
تطبيقات Heroku: إنشاء أمازون
تحرير package.json لبناء البرنامج النصي
إنشاء ملف تعريف
إنشاء قاعدة بيانات أطلس mongodb
قم بتعيين اتصال قاعدة البيانات في متغيرات Heroku Env
الالتزام والدفع
قائمة المستخدمين
بناء واجهة برمجة التطبيقات لمستخدمي القائمة
إنشاء شاشة قائمة المستخدمين
إنشاء تفاصيل الطلب ثابتة، وإجراءات، ومخفضة
حذف المستخدمين
بناء واجهة برمجة التطبيقات لحذف المستخدمين
إنشاء تفاصيل الطلب ثابتة، وإجراءات، ومخفضة
استخدم الإجراء في UserListScreen
تحرير المستخدم
بناء واجهة برمجة التطبيقات لمستخدمي التحديث
إنشاء واجهة مستخدم لشاشة التحرير
تنفيذ عرض البائع
إضافة قائمة البائع
إنشاء طريق البائع
قائمة المنتجات للبائع
قائمة أوامر للبائع
إضافة البائع إلى قائمة المنتجات وشاشة التفاصيل
إنشاء صفحة البائع
إنشاء صفحة البائع
تحديث مكون المنتج وشاشة المنتج
تحديث مسارات المنتج
أضف كاروسيل البائع الأعلى
تثبيت دائري التفاعل
تنفيذ الإجراءات والمخفضات لكبار البائعين
استخدم دائري التفاعل مع البيانات في الشاشة الرئيسية
فرض طلب العناصر من بائع واحد
قم بتحديث إجراء addToCart للشراء من بائع واحد عند الطلب
إنشاء مربع البحث وشاشة البحث
إنشاء شريط بحث في Header.js
إضافة نمط
التعامل مع نموذج الإرسال
تحرير عنوان URL للتحليل للحصول على سلسلة الاستعلام
تحديث قائمة المنتجات API للبحث بالاسم
أضف مرشح البحث المتقدم 1. قم بالتصفية حسب الفئة 2. قم بالتصفية حسب النطاق السعري 3. قم بالتصفية حسب متوسط التقييم
إكمال البحث المتقدم 1. التصفية حسب السعر 2. التصفية حسب التصنيف 3. الترتيب حسب السعر والتصنيف ...
تقييم ومراجعة المنتجات 1. تقييم المنتجات 2. إنشاء الإجراءات والمخفضات
اختر عنوانًا على خريطة Google 1. أنشئ بيانات اعتماد خريطة Google 2. قم بتحديث ملف .env باستخدام مفتاح Google Api 3. أنشئ واجهة برمجة التطبيقات لإرسال google api إلى الواجهة الأمامية 4. أنشئ شاشة خريطة 5. جلب google api 6. getUserLocation 7. قم بتثبيت @react- google-maps/api 8. استخدمه في شاشة الشحن 9. قم بتطبيق الخريطة على شاشة الخروج
BugFix: التشغيل محليًا بدون مشكلة
إضافة معلومات البائع إلى data.js
بيانات المنتج البذور مع معلومات المسؤول كبائع
إصلاح isSeller وisAdmin عند تحديث المستخدم
إزالة المصادقة من تفاصيل المستخدم
تنفيذ ترقيم الصفحات
إضافة ترقيم الصفحات إلى جهاز توجيه المنتج في الواجهة الخلفية
تطبيق رقم الصفحة على الإجراءات والمخفضات في الواجهة الأمامية
إظهار أرقام الصفحات في شاشة البحث
إيصال الطلب عبر البريد الإلكتروني بواسطة mailgun 1. إنشاء حساب mailgun 2. إضافة المجال الخاص بك والتحقق منه إلى mailgun 3. تثبيت mailgun-js 4. تعيين مفتاح API في ملف env 5. تغيير أمر الدفع في OrderRouter 6. إرسال البريد الإلكتروني
إنشاء شاشة لوحة المعلومات
إنشاء بيانات المخطط في الخلفية
بناء شاشة الرسم البياني
تنفيذ الدردشة المباشرة مع العملاء
استخدم مقبس io لإنشاء الواجهة الخلفية
إنشاء مكون مربع الدردشة
إنشاء شاشة الدعم
الترقية إلى React 17 وRouter 6 وMongoose 6
الخلفية
إلغاء تثبيت كافة الحزم وتثبيتها
إزالة الخيارات في اتصال النمس
التفاف mailgun في محاولة الصيد في orderRouter
الواجهة الأمامية
إلغاء تثبيت كافة الحزم وتثبيتها
إزالة في مربع البحث
التفاف كل شيء في
استبدل بـ <Route element={}>
استبدل بـ <Route element={ }/>
استبدال وأيضا
قم بتحديث PrivateRoute وAdminRoute وSellerRoute
استبدل Push () بالتنقل () من useNavigate
استبدل Props.match.params.id بـ const params = useParams();
استبدل Props.location.search بـ const { search } = useLocation(); وURLSearchParams
استبدل Props.match.path بـ const {pathname} = useLocation();
ضع معلومات المستخدم في useEffect في ChatBox وSupportScreen