به فصل سوم آموزش ساخت فروشگاه جنگو و ری اکت خوش آمدید. یک آموزش برنامه نویسی فول استک که فصل به فصل یک بار بک اند و یک بار فرانت اند را کدزنی میکنیم. و این فصل دوباره نوبت به فرانت اند رسیده! در هر اپ جاوا اسکریپتی میتوان از ریداکس برای مدیریت وضعیت استفاده کرد. در این فصل از ساخت فروشگاه آنلاین با جنگو و ری اکت به آموزش ریداکس میپردازیم و آن را به پروژه اضافه میکنیم. این فصل نه تنها یک آموزش ریداکس در ری اکت برای بهبود فروشگاهمان است. بلکه برای هر توسعه دهنده جاوااسکریپت به ویژه برنامه نویسان React میتواند مفید باشد.
این آموزش بخشی از بسته جامع ساخت فروشگاه با جنگو و ری اکت (+) است.
شما میتوانید بسته جامع با با مجموع قیمت کمتر از این لینک (+) تهیه کنید یا این مجموعه را فصل به فصل دریافت و تماشا کنید.
فهرست فصلبهفصل آموزش ساخت فروشگاه جنگو/ریکت
-
- ساخت فروشگاه آنلاین با Django و Reacct ـــ فصل ۱: ری اکت
- ساخت فروشگاه آنلاین با Django و Reacct ـــ فصل ۲: جنگو رست
- آموزش فروشگاه جنگو و ری اکت – فصل ۳: مدیریت وضعیت با Redux
- آموزش ساخت فروشگاه فول استک با جنگو و ری اکت – فصل ۴: سبد خرید
- آموزش فروشگاه آنلاین با جنگو پایتون و ری اکت – فصل ۵: اعتبارسنجی
- آموزش ساخت فروشگاه فول استک با جنگو و ری اکت – فصل ۶: احراز هویت
- آموزش ساخت فروشگاه فول استک با جنگو و ری اکت – فصل ۷: ثبت سفارش
- آموش ساخت فروشگاه فول استک با جنگو و ری اکت ــ فصل ۸: درگاه پرداخت
- آموزش ساخت فروشگاه فول استک با جنگو و ری اکت ــ فصل ۹: انتشار آنلاین
ریداکس یا Redux چیست ؟
ریداکس یک الگو (Pattern) برای حل مشکل مدیریت وضعیت اپلیکیشنهای پیچیده یا بزرگ است. پیشنهادکنندگان ریداکس آن را به صورت کتابخانه Redux (+) نیز کدنویسی و متن باز ارائه کردهاند تا دیگران بتوانند این الگو را در پروژههای خود پیاده کنند.
ایده اصلی ریداکس چیست؟
ایده ریداکس این است که یک مخزن (Store) مرکزی برای نگهداری متغیرهای سراسری اپلیکیشن (در مجموع State) ایجاد شود. سپس آبجکتهایی به نام اکشن Action داشته باشیم که رویدادهای تغییردهنده متغیرها را توصیف کنیم. هر گاه در جریان برنامه نیاز داریم که یک متغیر تغییر کند کافی است که اکشن متناسب با آن را با متد dispatch از شی Store پرتاب کنیم. سپس یک تابع هندلر برای این اکشن نیاز داریم که آن را در ریداکس با نام ریدوسر (Reducer) میشناسیم. در تابع تغیین میکنیم که به ازار هر اکشن چه اتفاقی برای یک متغیر به خصوص بیفتد.
به این ترتیب کل متغیرهای سراسری در یک انبار مرکزی نگهداری و به روز میشوند. پس مدیریت آنها و دیباگ چنین پروژهای و آگاهی لحظه به لحظه از مقدار هر کدام ساده میشود. هر کامپوننت که نیاز به متغیری داشته باشد، میتواند در هر لحه از استور آن را بخواند. اگر هم تغییری در آن داد بیدرنگ در استور آن را به روز کند.
در این آموزش بیشتر با این مفهوم و نحوه کدنویسی آن آشنا خواهیم شد.
نگاهی به فصل سوم آموزش فروشگاه جنگو و ری اکت
این فصل شامل ۱۰ درس است (ریز محتوای فیلمها را در انتهای توضیحات ببینید). در درس ۱ به این سوال پاسخ میدهیم که ریداکس چیست و چگونه کار میکند. همچنین کدنویسی ریداکس در یک اپ جاوا اسکریپتی ساده را خواهیم آموخت. مستندات ریداکس را برای خودآموزی بررسی خواهیم کرد.
در درس ۲ به نصب ابزارهای لازم شامل redux و react-redux و redux-thunk میپردازیم. همچنین افزونه Redux DevTools را برای بررسی State در مرورگر نصب میکنیم.
در درسهای ۳ تا ۶ به کدنویسی استاندارد ریداکس میپردازیم. ایجاد استور با crateStore و ترکیب ریدوسرها با combineReducer را خواهیم آموخت. کدنویسی تابع Reducer و تابع سازنده اکشن (Action Creator) را خواهیم آموخت. از آنجا که اکشن ما یک اکشن خاص (درخواست از سرور) است، نیاز به یک میان افزار به نام redux thunk داریم. این میان افزار یا Middleware پس از اجرای اکشن نتیجه آن را به صورت یک اکشن استاندارد به ریدوسر میفرستد.
در درسهای ۷ و ۸ از متغیرهای سراسری State برای نمایش یک Spinner و یک Alert در هنگام فراخوانی دادهها و یا خطا در دریافت دادهها استفاده میکنیم.
درس ۹ به تمرین اختصاص دارد. چرخه اجرا شده در درسهای ۲ تا ۸ را یک مرتبه از نو برای صفحه نمایش محصول پیادهسازی میکنیم.
درس ۱۰ نیز به جمعبندی اختصاص دارد. سورسکدهای پروژه نیز در اختبار فراگیران است. لینک کدها در فصل اول ارائه گردید.
آموزههای اصلی
- آموزش ریداکس به زبان ساده
- آموزش ریداکس در ری اکت به صورت پروژه محور
- آموزش ریداکس تانک (redux thunk)
- کار با هوکها در react redux
- کار با کامپوننتها در react bootstrap
این آموزش بینظیر است زیرا:
- یک آموزش برنامه نویسی فول استک محسوب میشود.
- علاوه بر کدنویسی شما مفاهیم را عمیق درک خواهید کرد.
- میتوانید این پروژه را در پایان راه به عنوان یک کار حرفهای عرضه کنید.
- جنگو به دلیل وجود پایتون انتخاب خوبی برای بک اند است (قلب اینستاگرام با جنگو است).
- ری اکت از بهترین کتابخانهها برای فرانت اند است.
- ریداکس یک انتخاب خوب برای مدیریت وضعیت در پروژههای بزرگ است.
پیشنیاز
- آموزش مقدماتی ری اکت (+)
- فصلهای اول (+) و دوم (+) آموزش فروشگاه با جنگو و ری اکت
کلیدواژگان
برنامه نویسی فول استک | آموزش ریداکس پروژه محور | فروشگاه جنگو | ری اکت | ساخت فروشگاه آنلاین با react | فول استک دولوپر | فروشگاه فول استک | ساخت فروشگاه اینترنتی با جنگو | آموزش فروشگاه با dajngo | | آموزش full stack | طراحی سایت فروشگاهی با پایتون – Redux به زبان ساده | جنگو پایتون | ری اکت پروژه محور | آموزش برنامه نویسی | آموزش فول استک پروژه محور
sali (خریدار محصول) –
سلام وقت بخیر
پکیج redux-devtools-extension
مشکل داره و نصب نمیشه
بنابراین composedevtools در store کار نمیکنه و اپ بالا نمیاد
ERROR in ./src/store.js 5:0-63
Module not found: Error: Can’t resolve ‘redux-devtools-extension’ in ‘C:\Users
ممنون میشم راهنمایی فرمایید
مصطفی آصفی –
سلام وقت بخیر. خطای نصب رو البته گزارش نکردین ولی در کل چون دپریکیت شده می تونید با دستور پایین به صورت اجباری دستور نصبش رو به npm بدین (چون کدها اینجا راست چین میشن نظر رو کپی و داخل یه ادیتور مثل وی اس کد یا نوت پد پلاس پلاس پیست کنید تا کدهایی که نوشتم رو بتونید به خوبی بخونید و استفاده کنید):
دستور نصب اجباری:
npm install redux-devtools-extension –force
یا از این دستور استفاده کنید:
npm install redux-devtools-extension –legacy-peer-deps
نتیجه رو لطفا گزارش کنید.
ehsan eslami (خریدار محصول) –
سلام من موقع نصب redux-devtools-extension با ارور مواجه میشم
npm ERR! code ERESOLVE
npm ERR! ERESOLVE unable to resolve dependency tree
npm ERR!
npm ERR! While resolving: frontend@0.1.0
npm ERR! Found: redux@5.0.1
npm ERR! node_modules/redux
npm ERR! redux@”^5.0.1″ from the root project
npm ERR!
npm ERR! Could not resolve dependency:
npm ERR! peer redux@”^3.1.0 || ^4.0.0″ from redux-devtools-extension@2.13.9
npm ERR! node_modules/redux-devtools-extension
npm ERR! redux-devtools-extension@”*” from the root project
npm ERR!
npm ERR! Fix the upstream dependency conflict, or retry
npm ERR! this command with –force or –legacy-peer-deps
npm ERR!
npm ERR!
npm ERR! For a full report see:
npm ERR! C:\Users\E2\AppData\Local\npm-cache\_logs\2024-03-21T15_01_50_598Z-eresolve-report.txt
npm ERR! A complete log of this run can be found in: C:\Users\E2\AppData\Local\npm-cache\_logs\2024-03-21T15_01_50_598Z-debug-0.log
PS C:\Users\E2\Desktop\react-jango-eshop\frontend> npm install redux-devtools-extension
npm ERR! code ERESOLVE
npm ERR! ERESOLVE unable to resolve dependency tree
npm ERR!
npm ERR! While resolving: frontend@0.1.0
npm ERR! Found: redux@5.0.1
npm ERR! node_modules/redux
npm ERR! redux@”^5.0.1″ from the root project
npm ERR!
npm ERR! Could not resolve dependency:
npm ERR! peer redux@”^3.1.0 || ^4.0.0″ from redux-devtools-extension@2.13.9
npm ERR! node_modules/redux-devtools-extension
npm ERR! redux-devtools-extension@”*” from the root project
npm ERR!
npm ERR! Fix the upstream dependency conflict, or retry
npm ERR! this command with –force or –legacy-peer-deps
npm ERR! to accept an incorrect (and potentially broken) dependency resolution.
npm ERR!
npm ERR!
npm ERR! For a full report see:
np
mehdi mahdavi (خریدار محصول) –
سلام خدا قوت
درس نهم این فصل برای من مشکل زیر را نشان میده برای مشاهده صفحه جزیات محصول ممنون میشم راهنمایی بفرمایید
ERROR
Cannot read properties of undefined (reading ‘params’)
TypeError: Cannot read properties of undefined (reading ‘params’)
at http://localhost:3000/static/js/bundle.js:1468:97
at commitHookEffectListMount (http://localhost:3000/static/js/bundle.js:39282:30)
at commitPassiveMountOnFiber (http://localhost:3000/static/js/bundle.js:40775:17)
at commitPassiveMountEffects_complete (http://localhost:3000/static/js/bundle.js:40747:13)
at commitPassiveMountEffects_begin (http://localhost:3000/static/js/bundle.js:40737:11)
at commitPassiveMountEffects (http://localhost:3000/static/js/bundle.js:40727:7)
at flushPassiveEffectsImpl (http://localhost:3000/static/js/bundle.js:42612:7)
at flushPassiveEffects (http://localhost:3000/static/js/bundle.js:42564:18)
at commitRootImpl (http://localhost:3000/static/js/bundle.js:42523:9)
at commitRoot (http://localhost:3000/static/js/bundle.js:42306:9)
مصطفی آصفی –
سلام وقت بخیر. لطفا همون طور که تو توضیحات فصل ۱ درج کردم react-router-dom نسخه ۵ رو نصب کنید. شما احتمالا نسخه ۶ استفاده می کنید. کامپوننت Route تو این نسخه تفاوت کرده و این خطایی که گزارش کردین معمولا به این دلیل پیش میاد.
محمد رستمی (خریدار محصول) –
سلام استاد وقت بخیر. من تا این فصل با دوره پیش اومدم همه چیز عالی پیش رفت اما بعد از اینکه store را با دستور createStore ایجاد کردم اول اینکه این دستور در vscode روی اون خطی کشیده میشه که این دستور را استفاده نکنید و به جای آن از configureStore استفاده کنید. از طرفی بعد از ایجاد استور کلاً جنگو من این خطا را میده
You’re accessing the development server over HTTPS, but it only supports HTTP.
ممنون میشم راهنمایی کاملی به زبان فارسی بفرمایید چطور این خطا را رفع کنم. تو سایتهای خارجی هم گشتم کمی زبانم ضعیف هست درست متوجه نشدم چی میگن. ممنون
مصطفی آصفی –
سلام و سپاس از اطلاعتون. بله بر اساس این پست این دستور منقضی شده ولی این به معنی از کار افتادن دستور نیست. دستور مثل سابق کار می کنه منتها اون هشدار اضافه شده و اون خط روی دستورات منقضی (deprecated) کشیده میشه تا به نوعی کاربر به استفاده از معماری جدید و بهروز تشویق شه. مشکلی ایجاد نمی کنه و فعلا قابل استفاده هست.
خطای دومی که دریافت می کنید سمت جنگو هست و احتمالا به این دلیله که تو تنظیمات (settings) ویژگی SECURE_SSL_REDIRECT برابر True هست و خود به خود ریدایرکت میشید به پروتکل https و باید اون رو False کنید.
SECURE_SSL_REDIRECT = False
رضا (خریدار محصول) –
درود بر شما
این فصل رو تموم کردم و خیلی خوب و با حوصله و دقیق مفاهیم بیان شده بودن.
فقط ای کاش قبل از رفتن به سراغ پروژه ی اصلی و پیاده سازی ریداکس، یک پروژه ی ساده مثل
counter (https://www.freecodecamp.org/news/learn-redux-by-making-a-counter-application/)
رو مخاطب تجربه میکرد و بعد وارد فصل 3 میشد.
و البته جای Redux Toolkit و Redux Persist و Redux Saga هم در این فصل خالی بود و به نظرم میتونست این فصل رو تبدیل به یک آموزش تقریبا جامع بکنه و امیدوارم در آینده اضافه بشه.
مصطفی آصفی –
سلام و ممنون از لطفتون. ببینید خیلی در مورد ریداکس میشه صحبت کرد ولی در این صورت دوره خیلی طولانی میشد و از هدف اصلی دور میشدیم. همون طور که در مورد ری اکت و خود جنگو هم همین طوره. ری اکت بوت استرپ همین طور. تو دوره های فول استک شما از فناوری ها استفاده می کنید برای هدف خاصی و بعد بسته به نیاز ممکنه برید روی یکی خودتون رو خیلی قوی کنید.
مثلا بعد از پایان این فروشگاه وقتی بردینش زیر کار متوجه بشین که ریداکسش باید خیلی قوی تر و امنیتی تر بشه. در این صورت اصلا چند هفته فقط روی ریداکسش کار کنید.
امین اجاقی (خریدار محصول) –
سلام بر استاد عزیز و گرامی مصطفی آصفی عزیز و دوست داشتنی درود و برکت خدا بر شما عزیزان استاد من فصل یک و دو را به پایان رساندم بسیار زیبا و روان مثل همیشه مطالب را به نیکویی بیان داشتید و بصورت کامل همه مسائل را از پایه شرح دادید که جای سپاس و ستایش دارد و اکنون به شروع این فصل رسیده ام گفتم یک سلامی در این قسمت به شما استاد عزیز و دوستان عرض نمایم برکت خدای متعال از آسمان نیکویی هایشان بر شما عزیزان و عشق زندگیتان و خانواده ها و دوستان و آشنایانتان.
مصطفی آصفی –
سلام و ممنون از محبت شما آقای اجاقی عزیز. انشالله این آموزش به یک پروژه کامل منتهی بشه که بتونه در زندگی حرفه ای شما و دوستان دیگه موثر باشه.
amin (خریدار محصول) –
سلام مجدد جناب آصفی
وافعیت من خودم فول استک نیستم و تمرکزم در حال حاضر روی ری اکت هستش
مباحثی هم که گفتم مثل کوکی و سشن و jwt و ثبت نام کاربر با شبکه های اجتماعی و… سطح دسترسی کاربر منظورم توضیحات و مدیریت اونها در سمت فرانت کار بود نه در سمت بک اند…
اگه امکانش هست این موارد رو در قسمت ری اکتی کار پوشش بدین (واقعیت من خودم الان نیازی به قسمت های بک اندی پروژه ندارم و پکیج هایی هم که معرفی کردین همگی مربوط به برنامه نویسی بک اند بودن و لازمم نمیشه که برم تهیه کنم اونها رو به خاطر مباحث مذکور)
مصطفی آصفی –
سلام مجدد. متوجه شدم. انشالله تو فصل های بعدی روی اعتبارسنجی سمت فرانت اند هم جداگانه صحبت می کنیم.
amin (خریدار محصول) –
سلام مجدد جناب آصفی
ممنون از توضیحات شما ، واقعیت خودم ریداکس رو تا حدودی بلد بودم و کار کرده بودم… ولی ویدئو معرفی دوره رو که دیدم برام جذاب بود که ادامه بدم دوره شما رو و ویدئو درس 1 که رایگان در هم رویش منتشر شده بود و 45 دقیقه بود و دیدم… خیلی خوب و مفهومی توضیح داده بودین و از سبک آموزش شما و نحوه تدریس و بیانتون خیلی خوشم اومد، خواستم تشکر کنم از شما
درخواستی داشتم از شما جناب آصفی و اون هم این بود که لطفا فصل احراز هویت در سمت فرانت رو خیلی کامل آموزش بدینش ، والا منابع آموزشی مخصوصا توی وب فارسی خیلی کم پیدا میشه برای این مورد… منظورم از ابتدای ثبت نام کاربر به وسیله فرم ورود و اعتبار سنجی فرم ها و ارسال اطلاعات فرم به سرور و سپس دریافت جواب سرور ، نحوه مدیریت اطلاعات ارسالی و دریافتی بوسیله کوکی یا سشن و jwt و… سپس با توجه به جواب سرور نحوه دسترسی کاربر به سایت و… اگر ثبت نام با شبکه های اجتماعی هم مثل گوگل و…. هم داخلش باشه که خیلی خوب میشه
والا خودتون استاید و میدونید که این مبحث احراز هویت و سطح دسترسی خیلی گسترده هستش و نکته زیاد داره توش ، انشاالله هرچی کامل تر بگید کمک بیشتری رو کردید به همگی
مصطفی آصفی –
سلام مجدد. از لطفتون ممنونم. بله سعی می کنیم در نهایت پروژه رو به جایی برسونیم که واقعا بتونید ازش برای مشتری یا استارتاپتون استفاده کنید.
البته توصیه میکنم سرفصلهای دورههای پایین رو ببینید. از مواردی که گفتین بعضی پوشش داده شدن. مثلا بحث توکن رو با ثبت نام ایمیلی تو دوره جنگو رست گفتیم و ثبت نام با گوگل و فیسبوک رو تو دوره ساخت شبکه اجتماعی با جنگو. تو این دوره دیگه احتمالا سراغ موارد قبلی نمیریم. اینجا احراز هویت پیامکی رو سعی می کنیم داشته باشیم.
آموزش جنگو رست (+)
آموزش ساخت سایت شبیه اینستاگرام (+)
amin –
جناب آصفی چندتا سوال دیگه هم داشتم از جناب عالی
من ری اکت کار هستم میخواستم بدونم
1- قسمت فرانت پروژه چند فصل دیگه مونده؟ میشه بگید چه سر فصل هایی دقیق در سمت فرانت مونده؟
2- مبحث احرار هویت و سطح دسترسی کاربر در سمت فرانت رو هم پوشش میدین به صورت کامل؟
مصطفی آصفی –
سلام مجدد. فصل چهارم که طراحی سبد خرید هست شنبه منتشر میشه. اینستاگرام هم رویش رو دنبال کنید که به موقع مطلع بشید. بعد از اون ثبت نام کاربر انشالله با احراز هویت پیامکی رو تو یک یا دو فصل خواهیم داشت (شاید بک اند و فرانت اند رو جدا بگیم). بعد هم درگاه پرداخت. اصل کارمون تا این بخش هست و فروشگاه کامل میشه. ۴ فصل دیگه. بعد از اون بسته به درخواست فراگیران شاید تبدیل به پلتفرم یا فارسی سازی یا … رو اولویت بدیم.
amin –
سلام
از ریداکس Toolkit استفاده کرید در این آموزش؟
مصطفی آصفی –
سلام به شما. خیر. فیلم معرفی رو ملاحظه کنید. محیط درس ها رو توضیح دادم.
حسین –
بی صبرانه منتظر جلو رفتن آموزش هستم … تا ی بار دیگه از آموزشای مفهومیتون استفاده ببرم …موفق باشید انشالله
مصطفی آصفی –
سلام و ممنون از پیام گرم شما. خود بنده هم مشتاق هستم که پایان این دوره رو ببینم. امیدوارم که نقطه شروع بسیاری از علاقه مندان برای ورود به بازار کار باشه.
پتروفیان –
سلام ، در این آموزش نحوه ی اتصال فروشگاه به درگاه پرداخت ایرانی (مثلا زرین …) آموزش داده می شه ؟
مصطفی آصفی –
سلام به شما. انشالله تو فصل های بعدی به این موضوع هم می رسیم. لطفا فیلم درس صفر فصل اول (+) رو تماشا کنید اونجا مسیر رو توضیح دادم.
احمد –
با سلام
ایا این فصل آخر این آموزش است یا فصلول دیگری باقی مانده؟
مصطفی آصفی –
سلام به شما. هنوز فصل های دیگه ای در راه هست. لطفا درس صفر فصل ۱ (+) رو با دقت تماشا کنید. مسیر رو اونجا توضیح دادم.