Angular Signals மற்றும் Effects
Angular தனது reactivity கையாளுதலை மாற்றியுள்ளது. ஒவ்வொரு சிறிய மாற்றத்தையும் கண்டறிய இனி உங்களுக்கு Zone.js தேவையில்லை. Signals மூலம், UI-இல் மாறும் குறிப்பிட்ட பகுதிகளை மட்டும் Angular புதுப்பிக்க முடியும். இது உங்கள் செயலிகளை (apps) வேகமாக்குகிறது மற்றும் zoneless mode-ஐ சாத்தியமாக்குகிறது.
Signals என்றால் என்ன?
ஒரு signal என்பது ஒரு reactive மதிப்பிற்கான கொள்கலன் (container) ஆகும். மதிப்பு மாறும்போது, template-இன் எந்தப் பகுதிகளைப் புதுப்பிக்க வேண்டும் என்பதை Angular துல்லியமாகத் தெரிந்துகொள்ளும்.
signal(): ஒரு புதிய signal-ஐ உருவாக்குகிறது. ஒரு மதிப்பை மாற்ற.set()அல்லது தற்போதைய மதிப்பின் அடிப்படையில் ஒரு மதிப்பை மாற்ற.update()ஆகியவற்றைப் பயன்படுத்தவும்.computed(): ஒரு read-only signal-ஐ உருவாக்குகிறது. இது மற்ற signals மூலம் தனது மதிப்பைத் பெறுகிறது. நீங்கள் இதை வாசிக்கும்போது மட்டுமே Angular இதை கணக்கிட்டு, அதன் முடிவைச் சேமித்து (cache) வைக்கும்.effect(): ஒரு signal மாறும்போது குறியீட்டை (code) இயக்கும். logging அல்லது manual DOM மாற்றங்கள் போன்ற side effects-களுக்கு இதைப் பயன்படுத்தவும்.
Signals மற்றும் RxJS: எப்போது எதைப் பயன்படுத்த வேண்டும்?
நீங்கள் இரண்டில் ஒன்றை மட்டும் தேர்ந்தெடுக்க வேண்டிய அவசியமில்லை. வெவ்வேறு பணிகளுக்காக இரண்டையும் பயன்படுத்த வேண்டும்.
Signals-ஐப் பயன்படுத்த:
- UI state-ஐத் தக்கவைக்க.
- template rendering-ஐ இயக்க.
@Input()மற்றும்@Output()ஆகியவற்றிற்கு மாற்றாக.- zoneless apps-களில் வேலை செய்ய.
RxJS-ஐப் பயன்படுத்த:
- HTTP அல்லது WebSockets போன்ற async streams-களைக் கையாள.
- debouncing அல்லது switching streams போன்ற சிக்கலான தர்க்கங்களுக்கு (complex logic).
- பல event sequences-களை இணைக்க.
rxjs-interop மூலம் இவற்றை இணைக்கலாம்:
toSignal(): ஒரு Observable-ஐ Signal-ஆக மாற்றுகிறது.toObservable(): ஒரு Signal-ஐ Observable-ஆக மாற்றுகிறது.
புதிய Decorator-Free APIs
Angular 17+ பதிப்புகள், decorators பயன்படுத்தாமல் தரவு ஓட்டத்தை (data flow) கையாள புதிய வழிகளை அறிமுகப்படுத்தியுள்ளன.
input(): ஒரு parent-லிருந்து வரும் தரவிற்கான read-only signal.model(): two-way binding-க்கான ஒரு writable signal. இது பழைய@Input()மற்றும்@Output()முறையை மாற்றுகிறது.output(): ஒரு child-லிருந்து parent-க்கு events-களை அனுப்பும் வழி. இது ஒரு signal அல்ல, ஆனால் இது உங்கள் குறியீட்டை எளிமையாக்குகிறது.
இது ஏன் React-ஐ விட சிறந்தது?
உங்களுக்கு React தெரிந்தால், இதன் கருத்துக்கள் (concepts) கிட்டத்தட்ட ஒரே மாதிரியாக இருக்கும், ஆனால் செயல்படும் விதம் மாறுபடும்.
- Automatic Tracking: React-இல், நீங்கள் dependencies-களை ஒரு array-இல் பட்டியலிட வேண்டும். Angular-இல், நீங்கள் எந்த signals-களைப் பயன்படுத்துகிறீர்கள் என்பதைத் தானாகவே கணினி கண்காணிக்கும். இதனால் நீங்கள் ஒரு dependency-ஐ மறக்க வாய்ப்பில்லை.
- Precision Updates: React பெரும்பாலும் முழு component-களையும் மீண்டும் render செய்யும். Angular signals, அந்த மதிப்பைச் சார்ந்திருக்கும் குறிப்பிட்ட DOM nodes-களை மட்டுமே புதுப்பிக்கும்.
- No Stale Closures: Signals-ஐ நீங்கள் அழைக்கும்போது, அவை எப்போதும் தற்போதைய மதிப்பையே வழங்கும்.
Source: https://dev.to/atilla_baspinar_c5c68ec63/angular-signals-and-effects-35mn
