AngularJS එදිරිව jQuery
AngularJS සහ jQuery එකිනෙකට වෙනස් මතවාදයන් අනුගමනය කරයි. ඔබ jQuery වෙතින් පැමිණෙන්නේ නම් සමහර වෙනස්කම් පුදුම සහගත විය හැකිය. කෝණික නිසා ඔබ කෝප විය හැකිය.
මෙය සාමාන්ය දෙයකි, ඔබ ඉදිරියට යා යුතුය. කෝණික එය වටිනවා.
විශාල වෙනස (TLDR)
jQuery මඟින් ඔබට DOM හි අත්තනෝමතික බිටු තෝරා ගැනීමට සහ ඒවාට තාවකාලික වෙනස්කම් කිරීමට මෙවලම් කට්ටලයක් ලබා දේ. කෑලි කෑලිවලට ඔබ කැමති ඕනෑම දෙයක් ඔබට කළ හැකිය.
AngularJS ඒ වෙනුවට ඔබට සම්පාදකයක් ලබා දෙයි .
මෙයින් අදහස් කරන්නේ AngularJS ඔබේ මුළු DOM ඉහළ සිට පහළට කියවා එය කේතයක් ලෙස සලකන බවයි, වචනාර්ථයෙන් සම්පාදකයාට උපදෙස් ලෙස. එය DOM හරහා ගමන් කරන විට, එය AngularJS සම්පාදකයාට හැසිරෙන ආකාරය සහ කළ යුතු දේ පවසන නිශ්චිත විධානයන් (සම්පාදක නියෝග) සොයයි . විධානයන් යනු ජාවාස්ක්රිප්ට් වලින් පිරී ඇති කුඩා වස්තූන් වන අතර ඒවා ගුණාංග, ටැග්, පන්ති හෝ අදහස් සමඟ සැසඳිය හැකිය.
DOM හි කොටසක් නිශ්චිත විධානයකට ගැලපෙන බව කෝණික සම්පාදකයා විසින් තීරණය කරන විට, එය DOM මූලද්රව්යය, ඕනෑම ගුණාංගයක්, වත්මන් $ විෂය පථය (එය දේශීය විචල්ය ගබඩාවක්) සහ තවත් ප්රයෝජනවත් බිටු පසුකරමින් එය මෙහෙයවන ශ්රිතය ලෙස හැඳින්වේ. මෙම ගුණාංගවල විධානය මඟින් අර්ථ නිරූපණය කළ හැකි ප්රකාශන අඩංගු විය හැකි අතර, එය විදැහුම්කරණය කරන්නේ කෙසේද සහ එය නැවත ඇඳිය යුත්තේ කවදාද යන්න පවසයි.
පාලක, සේවා වැනි අතිරේක කෝණික සංරචක වලට මඟ පෙන්වීම් ලබා ගත හැකිය. සම්පාදකයාගේ පතුලෙන් එළියට එන්නේ සම්පුර්ණයෙන්ම සැකසූ වෙබ් යෙදුමක් වන අතර රැහැන්ගත වී යාමට සූදානම්ය.
මෙයින් අදහස් කරන්නේ කෝණික යනු අච්චු ධාවනය වන බවයි. ඔබගේ අච්චුව ජාවාස්ක්රිප්ට් ධාවනය කරයි, අනෙක් පැත්තෙන් නොවේ. මෙය භූමිකාවන් රැඩිකල් ලෙස ආපසු හැරවීමක් වන අතර, පසුගිය අවුරුදු 10 හෝ ඊට වැඩි කාලයක් තිස්සේ අප විසින් ලියන ලද නොවරදින ජාවාස්ක්රිප්ට්හි සම්පූර්ණ ප්රතිවිරුද්ධයයි. මේ සඳහා ටිකක් පුරුදු විය හැකිය.
මෙය අධික ලෙස නියම කළ හැකි හා සීමා කළ හැකි යැයි හැඟේ නම්, සත්යයට වඩා කිසිවක් කළ නොහැකිය. AngularJS ඔබේ HTML කේතයක් ලෙස සලකන හෙයින්, ඔබේ වෙබ් යෙදුම තුළ ඔබට HTML මට්ටමේ කැටි ගැසීමක් ලැබේ . සෑම දෙයක්ම කළ හැකි අතර, ඔබ සංකල්පීය පිම්මක් කිහිපයක් කළ පසු බොහෝ දේ පුදුම සහගත ලෙස පහසුය.
අපි නිට්ටි රළුබවට වැටෙමු.
පළමුවෙන්ම, කෝණික jQuery වෙනුවට ආදේශ නොකරයි
කෝණික සහ jQuery විවිධ දේ කරයි. AngularJS ඔබට වෙබ් යෙදුම් නිෂ්පාදනය සඳහා මෙවලම් කට්ටලයක් ලබා දෙයි. jQuery ප්රධාන වශයෙන් ඔබට DOM වෙනස් කිරීම සඳහා මෙවලම් ලබා දෙයි. ඔබගේ පිටුවේ jQuery තිබේ නම්, AngularJS එය ස්වයංක්රීයව භාවිතා කරයි. එය එසේ නොවේ නම්, කෝණික ජේඑස් jQuery ලයිට් සමඟ නැව්ගත කරයි, එය කප්පාදුවකි, නමුත් තවමත් පරිපූර්ණ ලෙස භාවිතා කළ හැකි jQuery සංස්කරණයකි.
මිස්කෝ jQuery වලට කැමති අතර එය භාවිතා කිරීමට ඔබ විරුද්ධ වන්නේ නැත. කෙසේ වෙතත්, ඔබ ඉදිරියට යන විට ඔබේ සියලු කාර්යයන් විෂය පථය, සැකිලි සහ විධානයන්ගෙන් ලබා ගත හැකි බව ඔබට පෙනී යනු ඇති අතර, ඔබේ කේතය වඩාත් විවික්ත, වඩා වින්යාසගත කළ හැකි සහ තවත් බොහෝ දේ ඇති බැවින් හැකි සෑම විටම මෙම කාර්ය ප්රවාහයට ඔබ කැමති විය යුතුය. කෝණික.
ඔබ jQuery භාවිතා කරන්නේ නම්, ඔබ එය සෑම තැනම ඉසිය යුතු නොවේ. AngularJS හි DOM හැසිරවීම සඳහා නිවැරදි ස්ථානය නියෝගයක ඇත. මේවා ගැන වැඩි විස්තර පසුව.
තේරීම් කාරක එදිරිව ප්රකාශන ආකෘති සමඟ නොනවතින ජාවාස්ක්රිප්ට්
jQuery සාමාන්යයෙන් බාධාවකින් තොරව යොදනු ලැබේ. ඔබගේ ජාවාස්ක්රිප්ට් කේතය ශීර්ෂකයේ (හෝ පාදකයේ) සම්බන්ධ කර ඇති අතර එය සඳහන් කර ඇති එකම ස්ථානය මෙයයි. පිටුවේ බිටු තෝරා ගැනීමට සහ එම කොටස් වෙනස් කිරීමට ප්ලගීන ලිවීමට අපි තේරීම් කාරක භාවිතා කරමු.
ජාවාස්ක්රිප්ට් පාලනය කරයි. HTML සම්පූර්ණයෙන්ම ස්වාධීන පැවැත්මක් ඇත. ජාවාස්ක්රිප්ට් නොමැතිව වුවද ඔබේ HTML අර්ථ නිරූපණය කරයි. ඔන්ක්ලික් ගුණාංග ඉතා නරක පුරුද්දකි.
AngularJS ගැන ඔබ දකින පළමු දෙය නම් අභිරුචි ගුණාංග සෑම තැනකම තිබීමයි. ඔබේ HTML, ng ගුණාංග වලින් පිරී ඉතිරී යනු ඇත, ඒවා අත්යවශ්යයෙන්ම ස්ටෙරොයිඩ් මත ක්ලික් කරන්න. මේවා විධානයන් (සම්පාදක විධානයන්) වන අතර, අච්චුව ආකෘතියට සම්බන්ධ කර ඇති ප්රධාන ක්රමවලින් එකකි.
ඔබ මෙය මුලින්ම දුටු විට AngularJS පැරණි පාසල් ආක්රමණශීලී ජාවාස්ක්රිප්ට් ලෙස ලිවීමට ඔබ පෙළඹෙනු ඇත (මා මුලින් කළාක් මෙන්). ඇත්ත වශයෙන්ම, AngularJS එම නීති රීති අනුව ක්රියා නොකරයි. AngularJS හි, ඔබේ HTML5 අච්චුවකි. ඔබේ වෙබ් පිටුව නිෂ්පාදනය කිරීම සඳහා එය AngularJS විසින් සම්පාදනය කර ඇත.
පළමු විශාල වෙනස මෙයයි. JQuery සඳහා, ඔබේ වෙබ් පිටුව හැසිරවිය යුතු DOM ය. AngularJS වෙත, ඔබේ HTML යනු සම්පාදනය කළ යුතු කේතයයි. AngularJS ඔබේ මුළු වෙබ් පිටුවේම කියවන අතර එය වචනාර්ථයෙන් නව වෙබ් පිටුවකට සම්පාදනය කරයි.
ඔබේ අච්චුව ප්රකාශන විය යුතුය; එහි තේරුම සරලව කියවිය යුතුය. අර්ථවත් නම් සහිත අභිරුචි ගුණාංග අපි භාවිතා කරමු. අපි නව HTML අංග සාදන්නෙමු, නැවතත් අර්ථවත් නම් වලින්. අවම HTML දැනුමක් සහ කේතීකරණ හැකියාවක් නොමැති නිර්මාණකරුවෙකුට ඔබේ AngularJS අච්චුව කියවා එය කරන්නේ කුමක්ද යන්න තේරුම් ගත හැකිය. ඔහුට හෝ ඇයට වෙනස් කිරීම් කළ හැකිය. කෝණික ක්රමය මෙයයි.
අච්චුව රියදුරු අසුනේ ඇත.
AngularJS ආරම්භ කර නිබන්ධන හරහා ධාවනය වන විට මා මගෙන්ම ඇසූ පළමු ප්රශ්නය වන්නේ "මගේ කේතය කොහේද?" . මම ජාවාස්ක්රිප්ට් කිසිවක් ලියා නැත, නමුත් මට මේ සියල්ලම තිබේ. පිළිතුර පැහැදිලිය. AngularJS DOM සම්පාදනය කරන නිසා, AngularJS ඔබේ HTML කේතයක් ලෙස සලකයි. බොහෝ සරල අවස්ථා සඳහා බොහෝ විට අච්චුවක් ලිවීමට ප්රමාණවත් වන අතර එය ඔබ සඳහා යෙදුමක් ලෙස සම්පාදනය කිරීමට AngularJS ට ඉඩ දෙන්න.
ඔබගේ අච්චුව ඔබගේ යෙදුම මෙහෙයවයි. එය ඩී.එස්.එල් . ඔබ AngularJS සංරචක ලියන අතර, ඔබේ අච්චුවේ ව්යුහය මත පදනම්ව ඒවා ඇදගෙන නිසි වේලාවට ලබා ගැනීමට AngularJS බලා ගනී. මෙය සම්මත MVC රටාවකට බෙහෙවින් වෙනස් ය , එහිදී අච්චුව ප්රතිදානය සඳහා පමණි.
උදාහරණයක් ලෙස රූබි ඔන් රේල්ස් වලට වඩා එය XSLT ට සමාන ය .
මෙය පාලනයේ රැඩිකල් ප්රතිලෝමයකි.
ඔබගේ ජාවාස්ක්රිප්ට් වෙතින් ඔබගේ යෙදුම ධාවනය කිරීමට උත්සාහ කිරීම නවත්වන්න. අච්චුව යෙදුම ධාවනය කිරීමට ඉඩ දෙන්න, සහ සංරචක එකට රැහැන්ගත කිරීම ගැන AngularJS හට සැලකිලිමත් වීමට ඉඩ දෙන්න. මෙයද කෝණික ක්රමයයි.
අර්ථකථන HTML එදිරිව අර්ථකථන ආකෘති
JQuery සමඟ ඔබේ HTML පිටුවේ අර්ථාන්විත අර්ථවත් අන්තර්ගතයක් තිබිය යුතුය. ජාවාස්ක්රිප්ට් අක්රිය කර ඇත්නම් (පරිශීලකයෙකු හෝ සෙවුම් යන්ත්රයක් මඟින්) ඔබේ අන්තර්ගතයට ප්රවේශ විය හැකිය.
AngularJS ඔබේ HTML පිටුව අච්චුවක් ලෙස සලකන බැවිනි. ඔබේ අන්තර්ගතය සාමාන්යයෙන් ඔබේ ආකෘතියේ ගබඩා කර ඇති බැවින් අච්චුව අර්ථාන්විත නොවිය යුතුය. AngularJS ඔබේ DOM ආකෘතිය සමඟ සංයුක්ත කර අර්ථකථන වෙබ් පිටුවක් නිෂ්පාදනය කරයි.
ඔබේ HTML ප්රභවය තවදුරටත් අර්ථකථන නොවේ, ඒ වෙනුවට, ඔබේ API සහ සම්පාදනය කරන ලද DOM අර්ථකථන වේ.
AngularJS හි, ආකෘතියේ ජීවීන් යන්නෙහි අර්ථය, HTML යනු ප්රදර්ශනය සඳහා පමණි.
මෙම අවස්ථාවෙහිදී ඔබට SEO සහ ප්රවේශ්යතාව පිළිබඳ සියලු ආකාරයේ ප්රශ්න තිබිය හැකි අතර එය එසේය. මෙහි විවෘත ගැටළු තිබේ. බොහෝ තිර පා readers කයින් දැන් ජාවාස්ක්රිප්ට් විග්රහ කරනු ඇත. සෙවුම් යන්ත්රවලට AJAXed අන්තර්ගතය සුචිගත කළ හැකිය . එසේ වුවද, ඔබ තල්ලු කිරීමේ URL භාවිතා කරන බවට සහතික කර ගැනීමට ඔබට අවශ්ය වනු ඇති අතර ඔබට හොඳ අඩවි සිතියමක් තිබේ. ගැටලුව පිළිබඳ සාකච්ඡාවක් සඳහා මෙහි බලන්න: https://stackoverflow.com/a/23245379/687677
උත්සුකයන් වෙන් කිරීම (SOC) එදිරිව MVC
උත්සුකයන් වෙන් කිරීම (SOC) යනු SEO, ප්රවේශ්යතාව සහ බ්රව්සරයේ නොගැලපීම ඇතුළු විවිධ හේතූන් මත වසර ගණනාවක් තිස්සේ වෙබ් සංවර්ධනයේ වර්ධනය වූ රටාවකි. එය මේ වගේ ය:
- HTML - අර්ථකථන අර්ථය. HTML තනිවම සිටිය යුතුය.
- CSS - මෝස්තරය, CSS නොමැතිව පිටුව තවමත් කියවිය හැකිය.
- ජාවාස්ක්රිප්ට් - හැසිරීම, ස්ක්රිප්ට් නොමැතිව අන්තර්ගතය පවතී.
නැවතත්, AngularJS ඔවුන්ගේ නීති රීති අනුව ක්රියා නොකරයි. ආ roke ාතයකදී , AngularJS විසින් දශකයක් තුළ ලැබුණු ප්ර wisdom ාව දුරු කරන අතර ඒ වෙනුවට MVC රටාවක් ක්රියාත්මක කරයි.
එය මේ වගේ ය:
- මාදිලිය - ඔබේ ආකෘතිවල ඔබේ අර්ථකථන දත්ත අඩංගු වේ. ආකෘති සාමාන්යයෙන් JSON වස්තු වේ. ආකෘති පවතින්නේ $ විෂය පථය නම් වස්තුවක ලක්ෂණ ලෙස ය. ඔබගේ සැකිලි වලට ප්රවේශ විය හැකි $ විෂය පථය මත ඔබට ප්රයෝජනවත් උපයෝගීතා කාර්යයන් ගබඩා කළ හැකිය.
- බලන්න - ඔබේ අදහස් HTML වලින් ලියා ඇත. ඔබේ දත්ත ආකෘතියේ ජීවත් වන නිසා දර්ශනය සාමාන්යයෙන් අර්ථකථන නොවේ.
- පාලකය - ඔබේ පාලකය ජාවාස්ක්රිප්ට් ශ්රිතයක් වන අතර එය දර්ශනය ආකෘතියට සම්බන්ධ කරයි. එහි කාර්යය වන්නේ $ විෂය පථය ආරම්භ කිරීමයි. ඔබගේ යෙදුම මත පදනම්ව, ඔබට පාලකයක් සෑදීමට අවශ්ය නොවනු ඇත. පිටුවක ඔබට බොහෝ පාලකයන් සිටිය හැකිය.
MVC සහ SOC එකම පරිමාණයේ ප්රතිවිරුද්ධ කෙළවරේ නොවේ, ඒවා සම්පූර්ණයෙන්ම වෙනස් අක්ෂවල ඇත. කෝණික ජේඑස් සන්දර්භය තුළ SOC කිසිදු තේරුමක් නැත. ඔබ එය අමතක කර ඉදිරියට යා යුතුයි.
මා වැනි ඔබ බ්රව්සර් යුද්ධ හරහා ජීවත් වූවා නම්, ඔබට මෙම අදහස තරමක් අහිතකර විය හැකිය. එය ඉක්මවා යන්න, එය වටිනවා, මම පොරොන්දු වෙනවා.
ප්ලගීන එදිරිව
ප්ලගීන jQuery දිගු කරයි. AngularJS විධානයන් ඔබගේ බ්රව්සරයේ හැකියාවන් පුළුල් කරයි.
JQuery හි අපි jQuery.prototype වෙත ශ්රිත එකතු කිරීමෙන් ප්ලගීන අර්ථ දක්වමු. මූලද්රව්ය තෝරාගෙන ප්ලගිනය ඇමතීමෙන් අපි මේවා DOM වෙත සම්බන්ධ කරමු. JQuery හි හැකියාවන් පුළුල් කිරීම මෙහි අදහසයි.
නිදසුනක් ලෙස, ඔබේ පිටුවේ කැරොසල් එකක් අවශ්ය නම්, ඔබට අනුපිළිවෙලට නැති සංඛ්යා ලැයිස්තුවක් අර්ථ දැක්විය හැකිය, සමහර විට එය නාවික මූලද්රව්යයකින් ඔතා ඇත. එවිට ඔබට පිටුවේ ලැයිස්තුව තෝරා ගැනීමට jQuery කිහිපයක් ලිවිය හැකි අතර එය ස්ලයිඩින් සජිවිකරණය කිරීම සඳහා කල් ඉකුත් වූ ගැලරියක් ලෙස නැවත සකස් කරන්න.
AngularJS හි, අපි නියමයන් අර්ථ දක්වමු. විධානය යනු JSON වස්තුවක් ලබා දෙන ශ්රිතයකි. මෙම වස්තුව AngularJS ට පවසන්නේ DOM මූලද්රව්යයන් සෙවිය යුතු දේ සහ ඒවාට කළ යුතු වෙනස්කම් මොනවාද යන්නයි. ඔබ විසින් නිර්මාණය කරන ලද ගුණාංග හෝ අංග භාවිතා කරමින් විධානයන් අච්චුවට සම්බන්ධ කර ඇත. නව ගුණාංග සහ අංග සමඟ HTML හි හැකියාවන් පුළුල් කිරීම මෙහි අදහසයි.
AngularJS ක්රමය වන්නේ දේශීය පෙනුමැති HTML වල හැකියාවන් පුළුල් කිරීමයි. ඔබ HTML ලෙස පෙනෙන HTML ලිවිය යුතුය.
ඔබට කරුසල් අවශ්ය නම්, <carousel />
මූලද්රව්යයක් භාවිතා කරන්න , ඉන්පසු අච්චුවක් ඇදගෙන යාම සඳහා නියෝගයක් නිර්වචනය කර එම කිරි බොන වැඩ කරන්න.
වින්යාස ස්විචයන් සහිත විශාල ප්ලගීන වලට එදිරිව කුඩා විධානයන් ගොඩක්
JQuery සමඟ ඇති ප්රවණතාවය නම් ලයිට් බොක්ස් වැනි විශාල ප්ලගීන ලිවීමයි. ඒවා බොහෝ අගයන් සහ විකල්පයන් පසුකරමින් අපි වින්යාස කරමු.
මෙය AngularJS හි වැරැද්දකි.
පහත වැටීමක උදාහරණය ගන්න. ඩ්රොප් ඩවුන් ප්ලගිනයක් ලිවීමේදී ඔබ ක්ලික් හෑන්ඩ්ලර්ස් තුළ කේත කිරීමට පෙළඹෙනු ඇත, සමහර විට ඉහළට හෝ පහළට ෂෙව්රොන් එකක එකතු කිරීමේ කාර්යයක් විය හැකිය, සමහර විට දිග හැරුණු මූලද්රව්යයේ පන්තිය වෙනස් කරන්න, මෙනුව සඟවන්න පෙන්වන්න, සියලු ප්රයෝජනවත් දේවල්.
ඔබට කුඩා වෙනසක් කිරීමට අවශ්ය වන තුරු.
ඔබට සැරිසැරීමට අවශ්ය මෙනුවක් ඇති බව පවසන්න. හොඳයි දැන් අපට ගැටලුවක් තිබේ. අපගේ ප්ලගිනය අප වෙනුවෙන් අපගේ ක්ලික් හෑන්ඩ්ලර් තුළ රැහැන්ගත කර ඇත, මෙම විශේෂිත අවස්ථාවෙහිදී එය වෙනස් ලෙස හැසිරවීමට වින්යාස කිරීමේ විකල්පයක් එක් කිරීමට අපට අවශ්ය වනු ඇත.
AngularJS හි අපි කුඩා විධානයන් ලියන්නෙමු. අපගේ පහත වැටීමේ නියෝගය හාස්යජනක ලෙස කුඩා වනු ඇත. එය නැමුණු තත්වය පවත්වා ගෙන යා හැකි අතර (), දිග හැරීමට () හෝ ටොගල් කිරීමට () ක්රම සපයයි. මෙම ක්රම මඟින් යාවත්කාලීන වනු ඇත $ scope.menu.visible එය රාජ්යය රඳවා තබා ගන්නා බූලියන් ය.
දැන් අපගේ අච්චුව තුළ අපට මෙය කම්බි කළ හැකිය:
<a ng-click="toggle()">Menu</a>
<ul ng-show="menu.visible">
...
</ul>
මවුස් ඕවර් යාවත්කාලීන කිරීමට අවශ්යද?
<a ng-mouseenter="unfold()" ng-mouseleave="fold()">Menu</a>
<ul ng-show="menu.visible">
...
</ul>
අච්චුව යෙදුම මෙහෙයවන බැවින් අපට HTML මට්ටමේ කැටිති බවක් ලැබේ. සිද්ධි ව්යතිරේකයන් අනුව අපට නඩුවක් කිරීමට අවශ්ය නම්, අච්චුව මෙය පහසු කරයි.
වසා දැමීම එදිරිව. විෂය පථය
JQuery ප්ලගීන වසා දැමීමකදී නිර්මාණය වේ. එම වසා දැමීම තුළ පෞද්ගලිකත්වය පවත්වාගෙන යනු ලැබේ. එම වසා දැමීම තුළ ඔබේ විෂය පථය පවත්වා ගැනීම ඔබ සතු ය. ඔබට සැබවින්ම පිවිසිය හැක්කේ jQuery මඟින් ප්ලගිනයට ලබා දුන් DOM නෝඩ් කට්ටලයට පමණි, තවද වසා දැමීමේදී අර්ථ දක්වා ඇති ඕනෑම දේශීය විචල්යයන් සහ ඔබ අර්ථ දක්වා ඇති ඕනෑම ගෝලීය. මෙයින් අදහස් කරන්නේ ප්ලගීන සෑහෙන තරම් ස්වයං අන්තර්ගත බවයි. මෙය හොඳ දෙයකි, නමුත් සම්පූර්ණ යෙදුමක් නිර්මාණය කිරීමේදී එය සීමා කළ හැකිය. ගතික පිටුවක කොටස් අතර දත්ත යැවීමට උත්සාහ කිරීම වැඩකි.
AngularJS සතුව $ විෂය පථ වස්තු ඇත. මේවා ඔබේ ආකෘතිය ගබඩා කරන AngularJS විසින් නිර්මාණය කර නඩත්තු කරන විශේෂ වස්තු වේ. සමහර විධානයන් නව $ විෂය පථයක් බිහි කරනු ඇත, එය පෙරනිමියෙන් ජාවාස්ක්රිප්ට් මූලාකෘති උරුමය භාවිතා කරමින් එහි එතීමෙන් $ විෂය පථයෙන් උරුම වේ. $ විෂය පථය වස්තුව පාලකයට සහ දර්ශනයට ප්රවේශ විය හැකිය.
මෙය දක්ෂ කොටසයි. $ විෂය පථයේ උරුමයේ ව්යුහය දළ වශයෙන් DOM හි ව්යුහය අනුගමනය කරන හෙයින්, මූලද්රව්යයන්ට තමන්ගේම විෂය පථයට ප්රවේශය ඇති අතර, ඕනෑම විෂය පථයක් බාධාවකින් තොරව ගෝලීය $ විෂය පථය දක්වා (ගෝලීය විෂය පථයට සමාන නොවේ).
මෙමඟින් දත්ත අවට යැවීම සහ සුදුසු මට්ටමින් දත්ත ගබඩා කිරීම පහසු කරයි. පහත වැටීමක් දිග හැරෙන්නේ නම්, ඒ ගැන දැනගත යුත්තේ ඩ්රොප් ඩවුන් $ විෂය පථයට පමණි. පරිශීලකයා ඔවුන්ගේ මනාපයන් යාවත්කාලීන කරන්නේ නම්, ඔබට ගෝලීය $ විෂය පථය යාවත්කාලීන කිරීමට අවශ්ය විය හැකි අතර, පරිශීලක මනාපයන්ට සවන් දෙන ඕනෑම කැදැලි විෂය පථයක් ස්වයංක්රීයව දැනුම් දෙනු ලැබේ.
මෙය සංකීර්ණ බවක් පෙනෙන්නට තිබේ, ඇත්ත වශයෙන්ම, ඔබ එයට ලිහිල් කළ පසු එය පියාසර කිරීමක් වැනිය. ඔබට $ විෂය පථය නිර්මාණය කිරීමට අවශ්ය නැත, AngularJS ඔබේ අච්චු ධූරාවලිය මත පදනම්ව නිවැරදිව හා උචිත ලෙස එය ඔබ වෙනුවෙන් ස්ථාපනය කර වින්යාස කරයි. AngularJS පසුව පරායත්ත එන්නත් කිරීමේ මැජික් භාවිතා කරමින් එය ඔබේ සංරචකයට ලබා දෙයි (පසුව මෙය වැඩි විස්තර).
අතින් DOM වෙනස්වීම් එදිරිව දත්ත බන්ධනය
JQuery හි ඔබ ඔබගේ සියලු DOM වෙනස්කම් අතින් සිදු කරයි. ඔබ ක්රමයෙන් නව DOM අංග සාදයි. ඔබට JSON අරාවක් තිබේ නම් සහ එය DOM වෙත දැමීමට අවශ්ය නම්, ඔබ විසින් HTML උත්පාදනය කර එය ඇතුළු කිරීමට ශ්රිතයක් ලිවිය යුතුය.
AngularJS හි ඔබට මෙයද කළ හැකිය, නමුත් දත්ත බන්ධනය භාවිතා කිරීමට ඔබව දිරිමත් කරනු ලැබේ. ඔබේ ආකෘතිය වෙනස් කරන්න, සහ අච්චුවක් හරහා DOM එයට බැඳී ඇති නිසා ඔබේ DOM ස්වයංක්රීයව යාවත්කාලීන වනු ඇත, මැදිහත් වීමක් අවශ්ය නොවේ.
දත්ත බන්ධනය අච්චුවෙන් හෝ කරකැවෙන වරහන් සින්ටැක්ස් භාවිතයෙන් සිදු කරන බැවින් එය කිරීම පහසුය. ප්රජානන පොදු කාර්යයක් ඒ හා සම්බන්ධ වී නැති නිසා ඔබ එය සැමවිටම කරන බව පෙනේ.
<input ng-model="user.name" />
ආදාන අංගය බන්ධනය කරයි $scope.user.name
. ආදානය යාවත්කාලීන කිරීම ඔබගේ වර්තමාන විෂය පථයේ වටිනාකම යාවත්කාලීන කරනු ඇති අතර අනෙක් අතට.
එලෙසම:
<p>
{{user.name}}
</p>
පරිශීලක නාමය ඡේදයකින් ප්රතිදානය කරයි. එය සජීවී බන්ධනයකි, එබැවින් $scope.user.name
අගය යාවත්කාලීන කරන්නේ නම් , අච්චුව ද යාවත්කාලීන වේ.
අජැක්ස් හැම වෙලාවෙම
JQuery හි අජැක්ස් ඇමතුමක් ලබා ගැනීම තරමක් සරල ය, නමුත් එය තවමත් ඔබ දෙවරක් සිතිය හැකි දෙයකි. සිතීමට අමතර සංකීර්ණතාවයක් සහ නඩත්තු කිරීම සඳහා සාධාරණ පිටපතක් තිබේ.
AngularJS හි, අජැක්ස් යනු ඔබගේ පෙරනිමි විසඳුම වන අතර එය සෑම විටම සිදුවන්නේ ඔබ නොදැනුවත්වම ය. ඔබට ng-include සමඟ සැකිලි ඇතුළත් කළ හැකිය. ඔබට සරලම අභිරුචි විධානය සමඟ අච්චුවක් යෙදිය හැකිය. ඔබට සේවාවක් තුළ අජැක්ස් ඇමතුමක් ඔතා GitHub සේවාවක් හෝ Flickr සේවාවක් නිර්මාණය කළ හැකිය, එය ඔබට විශ්මය ජනක පහසුවෙන් ප්රවේශ විය හැකිය.
සේවා වස්තු එදිරිව උපකාරක කාර්යයන්
JQuery හි, අපට API එකකින් සංග්රහයක් ඇද ගැනීම වැනි කුඩා නොවන සම්බන්ධිත කාර්යයක් ඉටු කිරීමට අවශ්ය නම්, අපගේ වසා දැමීමේදී එය කිරීමට අපට කුඩා කාර්යයක් ලිවිය හැකිය. එය වලංගු විසඳුමක්, නමුත් අපට බොහෝ විට එම සංග්රහයට ප්රවේශ වීමට අවශ්ය නම් කුමක් කළ යුතුද? එම යෙදුම වෙනත් යෙදුමක නැවත භාවිතා කිරීමට අපට අවශ්ය නම් කුමක් කළ යුතුද?
AngularJS අපට සේවා වස්තු ලබා දෙයි.
සේවා යනු කාර්යයන් සහ දත්ත අඩංගු සරල වස්තු වේ. ඒවා සැමවිටම සිංගල්ටන් ය, එයින් අදහස් වන්නේ ඒවායින් එකකට වඩා තිබිය නොහැකි බවයි. අපට Stack Overflow API වෙත ප්රවේශ වීමට අවශ්ය යැයි පවසන්න, එසේ StackOverflowService
කිරීම සඳහා ක්රම නිර්වචනය කරන a ලිවිය හැකිය .
අපිට සාප්පු කරත්තයක් ඇතැයි කියමු. අපගේ කරත්තය නඩත්තු කරන සහ අයිතම එකතු කිරීම සහ ඉවත් කිරීම සඳහා ක්රම අඩංගු වන සාප්පු කාට් සේවාවක් අපි අර්ථ දැක්විය හැකිය. සේවාව සිංගල්ටන් එකක් වන අතර, අනෙක් සියලුම සංරචක විසින් බෙදාගෙන ඇති නිසා, අවශ්ය ඕනෑම වස්තුවකට සාප්පු කරත්තයට ලිවිය හැකි අතර එයින් දත්ත ලබා ගත හැකිය. එය සෑම විටම එකම කරත්තය.
සේවා වස්තූන් යනු ස්වයං-අන්තර්ගත AngularJS සංරචක වන අතර ඒවා අපට සුදුසු යැයි පෙනෙන පරිදි භාවිතා කළ හැකිය. ඒවා කාර්යයන් සහ දත්ත අඩංගු සරල JSON වස්තු වේ. ඒවා සැමවිටම සිංගල්ටන් ය, එබැවින් ඔබ සේවාවක දත්ත එක තැනක ගබඩා කරන්නේ නම්, එකම සේවාවක් ඉල්ලා සිටීමෙන් ඔබට එම දත්ත වෙනත් තැනකින් ලබා ගත හැකිය.
පරායත්ත එන්නත් කිරීම (DI) එදිරිව. ස්ථාපනය - aka de-spaghettification
AngularJS ඔබ වෙනුවෙන් ඔබේ යැපීම් කළමනාකරණය කරයි. ඔබට වස්තුවක් අවශ්ය නම්, එය සරලව යොමු කරන්න. AngularJS එය ඔබට ලබා දෙනු ඇත.
ඔබ මෙය භාවිතා කිරීමට පටන් ගන්නා තුරු, මෙය මොනතරම් දැවැන්ත කාල ආශීර්වාදයක්ද යන්න පැහැදිලි කිරීම අපහසුය. JQuery තුළ AngularJS DI වැනි කිසිවක් නොපවතී.
DI යන්නෙන් අදහස් කරන්නේ ඔබේ යෙදුම ලිවීම සහ එය එකට රැහැන් කිරීම වෙනුවට, ඔබ ඒ වෙනුවට නූල් මඟින් හඳුනාගත් සංරචක පුස්තකාලයක් නිර්වචනය කිරීමයි.
මට 'FlickrService' නමින් සංරචකයක් ඇති බව පවසන්න, එය Flickr වෙතින් JSON සංග්රහ ඇද ගැනීමේ ක්රම නිර්වචනය කරයි. දැන්, මට Flickr වෙත ප්රවේශ විය හැකි පාලකයක් ලිවීමට අවශ්ය නම්, මම පාලකය ප්රකාශයට පත් කරන විට 'FlickrService' නමට යොමු කළ යුතුය. AngularJS විසින් සංරචකය ස්ථාපනය කිරීම සහ එය මගේ පාලකයට ලබා දීම ගැන සැලකිලිමත් වනු ඇත.
උදාහරණයක් ලෙස, මෙන්න මම සේවාවක් අර්ථ දක්වන්නේ:
myApp.service('FlickrService', function() {
return {
getFeed: function() { // do something here }
}
});
දැන් මට එම සේවාව භාවිතා කිරීමට අවශ්ය වූ විට මම එය මෙවැනි නමකින් සඳහන් කරමි:
myApp.controller('myController', ['FlickrService', function(FlickrService) {
FlickrService.getFeed()
}]);
පාලකය ක්ෂණිකව ක්රියාත්මක කිරීම සඳහා FlickrService වස්තුවක් අවශ්ය බව AngularJS විසින් හඳුනා ගනු ඇති අතර එය අපට එකක් ලබා දෙනු ඇත.
මෙමඟින් රැහැන් ඇදීම ඉතා පහසු වන අතර ස්පැගටිෆිකේෂන් සඳහා වන ඕනෑම ප්රවණතාවක් බොහෝ දුරට ඉවත් කරයි. අප සතුව පැතලි සංරචක ලැයිස්තුවක් ඇති අතර අපට අවශ්ය විටදී AngularJS ඒවා එකින් එක අපට භාර දෙයි.
මොඩියුලර් සේවා ගෘහ නිර්මාණ ශිල්පය
ඔබේ කේතය සංවිධානය කළ යුතු ආකාරය ගැන jQuery ඉතා අල්පය. AngularJS හට අදහස් ඇත.
AngularJS මඟින් ඔබට ඔබේ කේතය තැබිය හැකි මොඩියුල ලබා දේ. උදාහරණයක් ලෙස ඔබ ෆ්ලිකර් සමඟ කථා කරන ස්ක්රිප්ට් එකක් ලියන්නේ නම්, ඔබේ ෆ්ලිකර් සම්බන්ධ සියලු කාර්යයන් එතීමට ෆ්ලිකර් මොඩියුලයක් සෑදීමට ඔබට අවශ්ය විය හැකිය. මොඩියුලයන්ට වෙනත් මොඩියුල (DI) ඇතුළත් කළ හැකිය. ඔබගේ ප්රධාන යෙදුම සාමාන්යයෙන් මොඩියුලයක් වන අතර ඔබේ යෙදුම රඳා පවතින අනෙකුත් සියලුම මොඩියුලයන් මෙයට ඇතුළත් විය යුතුය.
ඔබට සරල කේත නැවත භාවිතා කිරීමක් ලැබෙනු ඇත, ඔබට Flickr මත පදනම්ව වෙනත් යෙදුමක් ලිවීමට අවශ්ය නම්, ඔබට Flickr මොඩියුලය සහ voila ඇතුළත් කළ හැකිය, ඔබගේ නව යෙදුම තුළ ඔබගේ Flickr ආශ්රිත සියලු ක්රියාකාරකම් වලට ප්රවේශය ඇත.
මොඩියුලවල AngularJS සංරචක අඩංගු වේ. අපි මොඩියුලයක් ඇතුළත් කළ විට, එම මොඩියුලයේ ඇති සියලුම සංරචක ඒවායේ අද්විතීය නූල් මගින් හඳුනාගත් සරල ලැයිස්තුවක් ලෙස අපට ලබා ගත හැකිය . AngularJS හි පරායත්ත එන්නත් කිරීමේ යාන්ත්රණය භාවිතයෙන් අපට එම සංරචක එකිනෙක තුළට එන්නත් කළ හැකිය.
කෙටි කළොත්
AngularJS සහ jQuery සතුරන් නොවේ. AngularJS තුළ jQuery ඉතා සියුම් ලෙස භාවිතා කළ හැකිය. ඔබ හොඳින් AngularJS (සැකිලි, දත්ත-බන්ධන, $ විෂය පථය, මඟ පෙන්වීම්, ආදිය) භාවිතා කරන්නේ නම්, ඔබ ඔබට අවශ්ය වෙනවා ගොඩක් අඩු jQuery ඔබට වෙනත් ආකාරයකින් අවශ්ය වනු ඇති වඩා.
වටහා ගත යුතු ප්රධානම දෙය නම් ඔබේ අච්චුව ඔබේ යෙදුම මෙහෙයවන බවයි. සෑම දෙයක්ම කරන විශාල ප්ලගීන ලිවීමට උත්සාහ කිරීම නවත්වන්න. ඒ වෙනුවට එක් දෙයක් කරන කුඩා විධානයන් ලියන්න, ඉන්පසු ඒවා එකට සම්බන්ධ කිරීම සඳහා සරල අච්චුවක් ලියන්න.
බාධා රහිත ජාවාස්ක්රිප්ට් ගැන අඩුවෙන් සිතන්න, ඒ වෙනුවට HTML දිගු අනුව සිතන්න.
මගේ පුංචි පොත
මම AngularJS ගැන බෙහෙවින් කලබල වූ අතර, මම ඒ පිළිබඳව කෙටි පොතක් ලියා ඇති අතර එය අන්තර්ජාලය හරහා කියවීමට ඔබව සාදරයෙන් පිළිගනිමු http://nicholasjohnson.com/angular-book/ . එය ප්රයෝජනවත් යැයි මම සිතමි.