Redux කතෘ මෙහි!
රෙඩක්ස් ෆ්ලක්ස් වලට වඩා වෙනස් නොවේ . සමස්තයක් ලෙස එය එකම ගෘහ නිර්මාණ ශිල්පයක් ඇත, නමුත් ෆ්ලක්ස් ඇමතුම් ආපසු ලියාපදිංචි කිරීම භාවිතා කරන ක්රියාකාරී සංයුතිය භාවිතා කරමින් සංකීර්ණ කොන් කිහිපයක් කපා ගැනීමට රෙඩක්ස් සමත් වේ.
රෙඩක්ස් හි මූලික වෙනසක් නොමැත, නමුත් එය සමහර වියුක්ත කිරීම් පහසු කරන බව හෝ අවම වශයෙන් ක්රියාත්මක කිරීමට හැකි නම් එය ෆ්ලක්ස් තුළ ක්රියාත්මක කිරීමට අපහසු හෝ කළ නොහැකි දෙයක් බව මට පෙනේ.
අඩුකිරීමේ සංයුතිය
නිදසුනක් ලෙස, පේජින් කිරීම ගන්න. මගේ Flux + React Router උදාහරණය pagination හසුරුවයි, නමුත් ඒ සඳහා වන කේතය භයානක ය. එය භයානක වීමට එක් හේතුවක් වන්නේ වෙළඳසැල් හරහා ක්රියාකාරීත්වය නැවත භාවිතා කිරීම ෆ්ලක්ස් අස්වාභාවික වීමයි. වෙළඳසැල් දෙකකට විවිධ ක්රියාවන්ට ප්රතිචාර වශයෙන් පේජින් හැසිරවීමට අවශ්ය නම්, ඒවාට පොදු බේස් වෙළඳසැලකින් උරුම විය යුතුය (නරකයි! ඔබ උරුමය භාවිතා කරන විට ඔබ යම් සැලසුමකට අගුලු දමා ඇත), නැතහොත් බාහිරින් අර්ථ දක්වා ඇති ශ්රිතයක් අමතන්න සිදුවීම් හසුරුවන්නා, එය කෙසේ හෝ ෆ්ලක්ස් වෙළඳසැලේ පුද්ගලික තත්වය මත ක්රියාත්මක වීමට අවශ්ය වනු ඇත. සියල්ලම අවුල් සහගතය (නිසැකවම හැකි තාක් දුරට වුවද).
අනෙක් අතට, Redux pagination සමඟ අඩු කරන්නාගේ සංයුතියට ස්වාභාවික ස්තූතිය. එය ඔබ ලිවීමට හැකි නිසා, සියලු ආකාරයෙන් බැස ෙරඩියුසර්ස් තියෙන්නේ පිගත ෙරඩියුසර්ස් ජනනය කරන reducer කර්මාන්ත හා පසුව ඔබගේ reducer ගසක එය භාවිතා . එය එතරම් පහසු වීමට ප්රධාන දෙය නම් ෆ්ලක්ස් හි වෙළඳසැල් පැතලි නමුත් රෙඩක්ස් හි ප්රතික්රියාකාරක කූඩු කළ හැකි ආකාරයටම අඩු කරන්නන්ට ක්රියාකාරී සංයුතිය හරහා කූඩු කළ හැකි බැවිනි.
මෙම රටාව මඟින් පරිශීලක කේත අහෝසි කිරීම / නැවත කිරීම වැනි අපූරු විශේෂාංග ද සක්රීය කරයි. ෆ්ලක්ස් යෙදුමකට අහෝසි කිරීම / නැවත කිරීම ප්ලග් කිරීම කේත පේළි දෙකක් යැයි ඔබට සිතාගත හැකිද? අමාරුයි. Redux සමඟ, එය අඩුකරන සංයුතියේ රටාවට ස්තුති වේ. මට ඒ ගැන අළුත් දෙයක් නැති බව ඉස්මතු කිරීමට අවශ්යයි - එල්ම් ගෘහ නිර්මාණ ශිල්පයේ පුරෝගාමී හා විස්තරාත්මකව විස්තර කර ඇති රටාව මෙයයි .
සේවාදායක විදැහුම්කරණය
මිනිසුන් සේවාදායකය ෆ්ලක්ස් සමඟ හොඳින් විදහා දක්වයි, නමුත් අප සතුව ෆ්ලක්ස් පුස්තකාල 20 ක් ඇති බව දැකීමෙන් එක් එක් සේවාදායකය විදැහුම්කරණය “පහසු” කිරීමට උත්සාහ කරයි, සමහර විට ෆ්ලක්ස් සේවාදායකයේ දළ දාර කිහිපයක් තිබේ. සත්යය නම් ෆේස්බුක් බොහෝ සේවාදායක විදැහුම්කරණය නොකරන බැවින් ඔවුන් ඒ ගැන එතරම් තැකීමක් කර නැති අතර එය පහසු කිරීම සඳහා පරිසර පද්ධතිය මත රඳා පවතී.
සාම්ප්රදායික ප්රවාහයේදී වෙළඳසැල් තනි බොත්තම් වේ. මෙයින් අදහස් කරන්නේ සේවාදායකයේ විවිධ ඉල්ලීම් සඳහා දත්ත වෙන් කිරීම දුෂ්කර බවයි. කළ නොහැකි, නමුත් දුෂ්කර ය. බොහෝ ෆ්ලක්ස් පුස්තකාල (නව ෆ්ලක්ස් යුටිල්ස් ) දැන් ඔබට යෝජනා කරන්නේ තනි බොත්තම් වෙනුවට පන්ති භාවිතා කරන ලෙසයි, එබැවින් ඔබට ඉල්ලීමකට ගබඩා ක්ෂණිකව කළ හැකිය.
ෆ්ලක්ස් හි ඔබ විසින් විසඳිය යුතු පහත සඳහන් ගැටළු තවමත් පවතී (ඔබ හෝ ඔබේ ප්රියතම ෆ්ලක්ස් පුස්තකාලයේ උපකාරය වන ෆ්ලූමොක්ස් හෝ ඇල්ට් වැනි ):
- වෙළඳසැල් පන්ති නම්, ඉල්ලීමකට පිටත් කර යැවීමෙන් මම ඒවා නිර්මාණය කර විනාශ කරන්නේ කෙසේද? මම වෙළඳසැල් ලියාපදිංචි කරන්නේ කවදාද?
- ගබඩාවලින් දත්ත හයිඩ්රේට් කර සේවාදායකයා මත නැවත විජලනය කරන්නේ කෙසේද? මේ සඳහා විශේෂ ක්රම ක්රියාත්මක කිරීමට මට අවශ්යද?
ෆ්ලක්ස් රාමු (වැනිලා ෆ්ලක්ස් නොවේ) මෙම ගැටලුවලට විසඳුම් ඇති බව පිළිගත යුතුය, නමුත් ඒවා සංකීර්ණ වී ඇති බව මට පෙනේ. උදාහරණයක් ලෙස, ක්රියාත්මක කිරීමට Flummox ඔබ අමතමින් serialize()
සහ deserialize()
ඔබේ ගබඩා . takeSnapshot()
JSON ගසක ඔබේ තත්වය ස්වයංක්රීයව අනුක්රමිකව ලබා දීමෙන් Alt මෙම යහපත්කම විසඳයි .
Redux තව දුරටත් ඉදිරියට යයි: එක් ගබඩාවක් පමණක් ඇති බැවින් (බොහෝ අඩු කරන්නන් විසින් කළමනාකරණය කරනු ලැබේ), (නැවත) සජලනය කළමනාකරණය කිරීමට ඔබට විශේෂ API අවශ්ය නොවේ. ඔබට “ෆ්ලෂ්” හෝ “හයිඩ්රේට්” වෙළඳසැල් අවශ්ය නැත - ඇත්තේ එක් ගබඩාවක් පමණි, ඔබට එහි වර්තමාන තත්වය කියවිය හැකිය, නැතහොත් නව රාජ්යයක් සහිත නව වෙළඳසැලක් නිර්මාණය කළ හැකිය. සෑම ඉල්ලීමකටම වෙනම ගබඩා අවස්ථාවක් ලැබේ. Redux සමඟ සේවාදායක විදැහුම්කරණය පිළිබඳ වැඩිදුර කියවන්න.
නැවතත්, මෙය ෆ්ලක්ස් සහ රෙඩක්ස් යන දෙඅංශයෙන්ම කළ හැකි දෙයකි, නමුත් ෆ්ලක්ස් පුස්තකාල විසින් මෙම ගැටළුව විසඳන්නේ ටොන් ගණනක් ඒපීඅයි සහ සම්මුතීන් හඳුන්වා දීමෙනි, තවද රෙඩක්ස් හට එය විසඳීමට පවා අවශ්ය නැත. පළමු ස්ථානය සංකල්පීය සරලත්වයට ස්තූතියි.
සංවර්ධක අත්දැකීම්
රෙඩක්ස් ජනප්රිය ෆ්ලක්ස් පුස්තකාලයක් බවට පත්වීමට මම සැබවින්ම අදහස් නොකළෙමි time මම එය ලිව්වේ කාල චාරිකා සමඟ උණුසුම් රීලෝඩ් කිරීම පිළිබඳ මගේ ප්රතික්රියා යුරෝප් කතාවේ වැඩ කරමින් සිටියදීය . මට එක් ප්රධාන පරමාර්ථයක් තිබුණි: මැස්සන් මත අඩුකිරීමේ කේතය වෙනස් කිරීමට හෝ ක්රියාවන් ඉක්මවා යාමෙන් “අතීතය වෙනස් කිරීමට” ඉඩ දෙන්න, සහ රාජ්යය නැවත ගණනය කිරීම බලන්න.
මෙය කළ හැකි එක් ෆ්ලක්ස් පුස්තකාලයක් මා දැක නැත. උණුසුම් ලෝඩරය ප්රතික්රියා කිරීමෙන් ඔබට මෙය කිරීමට ඉඩ නොදේ fact ඇත්ත වශයෙන්ම ඔබ ෆ්ලක්ස් වෙළඳසැල් සංස්කරණය කරන්නේ නම් එය කැඩී යන්නේ ඒවා සමඟ කුමක් කළ යුතු දැයි නොදන්නා බැවිනි.
Redux අඩුකිරීමේ කේතය නැවත පූරණය කිරීමට අවශ්ය වූ විට, එය ඇමතෙන replaceReducer()
අතර යෙදුම නව කේතය සමඟ ක්රියාත්මක වේ. ෆ්ලැක්ස් හි, දත්ත සහ කාර්යයන් ෆ්ලක්ස් වෙළඳසැල් වල පැටලී ඇති බැවින් ඔබට “කාර්යයන් ප්රතිස්ථාපනය කළ නොහැක”. එපමණක් නොව, ඔබට කෙසේ හෝ නව සංස්කරණ ඩිස්පචර් සමඟ නැවත ලියාපදිංචි කළ යුතුය Red රෙඩක්ස් සතුව නැති දෙයක්.
පරිසර පද්ධතිය
Redux සතුව පොහොසත් හා වේගයෙන් වර්ධනය වන පරිසර පද්ධතියක් ඇත. එයට හේතුව එය මිඩ්ල්වෙයාර් වැනි දිගු ලකුණු කිහිපයක් සපයන බැවිනි . එය සැලසුම් කර ඇත්තේ ල ging ු- සටහන් , පොරොන්දු සඳහා සහාය , නිරීක්ෂණ , මාර්ගගත කිරීම , වෙනස් කළ නොහැකි දේ චෙක්පත් , නොපසුබට උත්සාහය යනාදිය මනසේ තබාගෙන ය. මේ සියල්ල ප්රයෝජනවත් නොවන බව පෙනේ, නමුත් එකට වැඩ කිරීම සඳහා පහසුවෙන් ඒකාබද්ධ කළ හැකි මෙවලම් සමූහයකට ප්රවේශ වීම සතුටක්.
සරල බව
රෙඩක්ස් විසින් ෆ්ලැක්ස් හි සියලු ප්රතිලාභ ආරක්ෂා කරයි (ක්රියාවන් පටිගත කිරීම සහ නැවත ධාවනය කිරීම, ඒක දිශානුගත දත්ත ප්රවාහය, යැපෙන විකෘති) සහ ඩිස්පැචර් සහ ගබඩා ලියාපදිංචිය හඳුන්වා නොදී නව ප්රතිලාභ (පහසුවෙන් අහෝසි කිරීම, උණුසුම් නැවත පූරණය කිරීම) එකතු කරයි.
ඔබ සරල මට්ටමේ තබා ගැනීම වැදගත් වන්නේ ඔබ ඉහළ මට්ටමේ වියුක්තයන් ක්රියාත්මක කරන අතරම එය ඔබව සිහිබුද්ධියෙන් තබා ගන්නා බැවිනි.
බොහෝ ෆ්ලක්ස් පුස්තකාල මෙන් නොව, Redux API මතුපිට ඉතා කුඩාය. ඔබ සංවර්ධකයාගේ අනතුරු ඇඟවීම්, අදහස් සහ සනීපාරක්ෂක චෙක්පත් ඉවත් කළහොත් එය පේළි 99 කි. නිදොස් කිරීම සඳහා උපක්රමශීලී අසින්ක් කේතයක් නොමැත.
ඔබට එය සැබවින්ම කියවා සියලු Redux තේරුම් ගත හැකිය.
ෆ්ලක්ස් හා සසඳන විට රෙඩක්ස් භාවිතා කිරීමේ අවාසි පිළිබඳ මගේ පිළිතුර ද බලන්න .