CSS வியூ டிரான்சிஷன்களை, நிலை நிலைத்தன்மை மற்றும் அனிமேஷன் மீட்பில் கவனம் செலுத்தி ஆராயுங்கள். முன்னும் பின்னுமாகச் செல்லும்போது கூட, தடையற்ற பயனர் அனுபவங்களை உருவாக்குவது எப்படி என்பதை அறியுங்கள்.
CSS வியூ டிரான்சிஷன் நிலை நிலைத்தன்மை: அனிமேஷன் நிலையை மீட்டெடுத்தல்
CSS வியூ டிரான்சிஷன்கள் ஒரு சக்திவாய்ந்த புதிய அம்சமாகும், இது டெவலப்பர்களுக்கு ஒரு வலைப் பயன்பாட்டின் வெவ்வேறு நிலைகளுக்கு இடையில் மென்மையான மற்றும் பார்வைக்கு ஈர்க்கக்கூடிய மாற்றங்களை உருவாக்க அனுமதிக்கிறது. ஆரம்பகட்ட செயலாக்கம் அடிப்படை மாற்றங்களில் கவனம் செலுத்தியிருந்தாலும், உண்மையான மெருகூட்டப்பட்ட பயனர் அனுபவத்தை உருவாக்குவதில் ஒரு முக்கிய அம்சம், நிலை நிலைத்தன்மை மற்றும் அனிமேஷன் மீட்பைக் கையாள்வதாகும், குறிப்பாக பக்கங்கள் அல்லது பிரிவுகளுக்கு இடையில் முன்னும் பின்னுமாக செல்லும்போது.
நிலை நிலைத்தன்மையின் தேவையைப் புரிந்துகொள்ளுதல்
ஒரு பயனர் ஒரு புகைப்படக் கேலரியில் உலாவுகிறார் என்று கற்பனை செய்து பாருங்கள். ஒவ்வொரு கிளிக்கும் ஒரு நல்ல அனிமேஷனுடன் அடுத்த படத்திற்கு மாறுகிறது. இருப்பினும், பயனர் தனது உலாவியில் "பின்" பொத்தானைக் கிளிக் செய்தால், அனிமேஷன் தலைகீழாக மாறி முந்தைய படத்தின் நிலைக்குத் திரும்பும் என்று அவர்கள் எதிர்பார்க்கலாம். நிலை நிலைத்தன்மை இல்லாமல், உலாவி எந்த மாற்றமும் இல்லாமல் முந்தைய பக்கத்திற்குத் திரும்பக்கூடும், இது ஒரு குழப்பமான மற்றும் சீரற்ற அனுபவத்தை ஏற்படுத்துகிறது.
நிலை நிலைத்தன்மை, பயன்பாடு UI-இன் முந்தைய நிலையை நினைவில் வைத்திருப்பதை உறுதிசெய்கிறது மற்றும் மென்மையாக அதற்குத் திரும்ப முடியும். முழுப் பக்க மறுஏற்றங்கள் இல்லாமல் வழிசெலுத்தல் பெரும்பாலும் DOM-ஐக் கையாள்வதை உள்ளடக்கிய ஒற்றைப் பக்க பயன்பாடுகளுக்கு (SPAs) இது மிகவும் முக்கியமானது.
அடிப்படை வியூ டிரான்சிஷன்கள்: ஒரு மீள்பார்வை
நிலை நிலைத்தன்மைக்குள் நுழைவதற்கு முன், CSS வியூ டிரான்சிஷன்களின் அடிப்படைகளை விரைவாகப் பார்ப்போம். நிலை-மாற்றும் குறியீட்டை document.startViewTransition()
க்குள் வைப்பதே இதன் முக்கிய செயல்முறையாகும்:
document.startViewTransition(() => {
// Update the DOM to the new state
updateTheDOM();
});
உலாவி பின்னர் தொடர்புடைய DOM கூறுகளின் பழைய மற்றும் புதிய நிலைகளைப் தானாகப் பிடித்து, CSS ஐப் பயன்படுத்தி அவற்றுக்கிடையேயான மாற்றத்தை அனிமேட் செய்கிறது. transition-behavior: view-transition;
போன்ற CSS பண்புகளைப் பயன்படுத்தி அனிமேஷனை நீங்கள் தனிப்பயனாக்கலாம்.
சவால்: பின் வழிசெலுத்தலில் அனிமேஷன் நிலையைப் பாதுகாத்தல்
பயனர் "பின்" வழிசெலுத்தல் நிகழ்வைத் தூண்டும்போது மிகப்பெரிய சவால் எழுகிறது, பொதுவாக உலாவியின் பின் பொத்தானைக் கிளிக் செய்வதன் மூலம். உலாவியின் இயல்புநிலை நடத்தை பெரும்பாலும் அதன் கேச்சிலிருந்து பக்கத்தை மீட்டெடுப்பதாகும், இது வியூ டிரான்சிஷன் API-ஐ திறம்பட தவிர்த்துவிடுகிறது. இது முன்னர் குறிப்பிட்டபடி முந்தைய நிலைக்கு ஒரு குழப்பமான தாவலுக்கு வழிவகுக்கிறது.
அனிமேஷன் நிலையை மீட்டெடுப்பதற்கான தீர்வுகள்
இந்தச் சவாலைச் சமாளிக்கவும், மென்மையான அனிமேஷன் நிலை மீட்பை உறுதிப்படுத்தவும் பல உத்திகளைக் கையாளலாம்.
1. ஹிஸ்டரி API மற்றும் popstate
நிகழ்வைப் பயன்படுத்துதல்
ஹிஸ்டரி API உலாவியின் ஹிஸ்டரி ஸ்டாக் மீது நுணுக்கமான கட்டுப்பாட்டை வழங்குகிறது. history.pushState()
மூலம் ஹிஸ்டரி ஸ்டாக்கில் புதிய நிலைகளைத் தள்ளுவதன் மூலமும், popstate
நிகழ்வைக் கேட்பதன் மூலமும், நீங்கள் பின் வழிசெலுத்தலை இடைமறித்து, ஒரு தலைகீழ் வியூ டிரான்சிஷனைத் தூண்டலாம்.
உதாரணம்:
// Function to navigate to a new state
function navigateTo(newState) {
document.startViewTransition(() => {
updateTheDOM(newState);
history.pushState(newState, null, newState.url);
});
}
// Listen for the popstate event
window.addEventListener('popstate', (event) => {
const state = event.state;
if (state) {
document.startViewTransition(() => {
updateTheDOM(state); // Revert to the previous state
});
}
});
இந்த எடுத்துக்காட்டில், navigateTo()
DOM-ஐப் புதுப்பித்து, ஹிஸ்டரி ஸ்டாக்கில் ஒரு புதிய நிலையைத் தள்ளுகிறது. popstate
நிகழ்வு கேட்பவர் பின்னர் பின் வழிசெலுத்தலை இடைமறித்து, முந்தைய நிலைக்குத் திரும்புவதற்கு மற்றொரு வியூ டிரான்சிஷனைத் தூண்டுகிறது. `history.pushState` வழியாக தள்ளப்பட்ட state
ஆப்ஜெக்டில் போதுமான தகவல்களைச் சேமிப்பதே இங்கு முக்கியமானது, இது `updateTheDOM` செயல்பாட்டில் DOM-இன் முந்தைய நிலையை மீண்டும் உருவாக்க உங்களை அனுமதிக்கிறது. இது பெரும்பாலும் முந்தைய வியூவைக் காண்பிக்கப் பயன்படுத்தப்பட்ட தொடர்புடைய தரவைச் சேமிப்பதை உள்ளடக்கியது.
2. பேஜ் விசிபிலிட்டி API-ஐப் பயன்படுத்துதல்
பேஜ் விசிபிலிட்டி API, ஒரு பக்கம் எப்போது தெரியும் அல்லது மறைக்கப்படும் என்பதைக் கண்டறிய உங்களை அனுமதிக்கிறது. பயனர் பக்கத்திலிருந்து வெளியே செல்லும்போது, அது மறைக்கப்படும். அவர்கள் திரும்பி வரும்போது, அது மீண்டும் தெரியும். பக்கம் மறைக்கப்பட்ட பிறகு தெரியும் போது, ஒரு தலைகீழ் வியூ டிரான்சிஷனைத் தூண்டுவதற்கு இந்த API-ஐப் பயன்படுத்தலாம்.
உதாரணம்:
document.addEventListener('visibilitychange', () => {
if (document.visibilityState === 'visible') {
document.startViewTransition(() => {
// Revert to the previous state based on cached data
revertToPreviousState();
});
}
});
இந்த அணுகுமுறை, பக்கம் மறைக்கப்படுவதற்கு முன்பு DOM-இன் முந்தைய நிலையை கேச் செய்வதை நம்பியுள்ளது. revertToPreviousState()
செயல்பாடு பின்னர் இந்த கேச் செய்யப்பட்ட தரவைப் பயன்படுத்தி முந்தைய வியூவை மீண்டும் உருவாக்கி, தலைகீழ் மாற்றத்தைத் தொடங்கும். ஹிஸ்டரி API அணுகுமுறையை விட இதைச் செயல்படுத்துவது எளிதாக இருக்கலாம், ஆனால் கேச் செய்யப்பட்ட தரவை கவனமாகக் கையாள வேண்டும்.
3. ஹிஸ்டரி API மற்றும் செஷன் ஸ்டோரேஜை இணைத்தல்
மேலும் சிக்கலான சூழ்நிலைகளுக்கு, அனிமேஷன் தொடர்பான தரவைப் பாதுகாக்க நீங்கள் ஹிஸ்டரி API-ஐ செஷன் ஸ்டோரேஜுடன் இணைக்க வேண்டியிருக்கலாம். செஷன் ஸ்டோரேஜ் ஒரே உலாவி தாவலில் பக்க வழிசெலுத்தல்களில் நீடிக்கும் தரவைச் சேமிக்க உங்களை அனுமதிக்கிறது. நீங்கள் அனிமேஷன் நிலையை (எ.கா., தற்போதைய பிரேம் அல்லது முன்னேற்றம்) செஷன் ஸ்டோரேஜில் சேமித்து, பயனர் பக்கத்திற்குத் திரும்பும்போது அதை மீட்டெடுக்கலாம்.
உதாரணம்:
// Before navigating away:
sessionStorage.setItem('animationState', JSON.stringify(currentAnimationState));
// On page load or popstate event:
const animationState = JSON.parse(sessionStorage.getItem('animationState'));
if (animationState) {
document.startViewTransition(() => {
// Restore animation state and trigger reverse transition
restoreAnimationState(animationState);
});
}
இந்த எடுத்துக்காட்டு currentAnimationState
(அனிமேஷனின் முன்னேற்றம், தற்போதைய பிரேம் அல்லது வேறு எந்த தொடர்புடைய தரவு பற்றிய தகவல்களையும் கொண்டிருக்கலாம்) என்பதை வெளியே செல்வதற்கு முன் செஷன் ஸ்டோரேஜில் சேமிக்கிறது. பக்கம் ஏற்றப்படும்போது அல்லது popstate
நிகழ்வு தூண்டப்படும்போது, அனிமேஷன் நிலை செஷன் ஸ்டோரேஜிலிருந்து மீட்டெடுக்கப்பட்டு, அனிமேஷனை அதன் முந்தைய நிலைக்கு மீட்டெடுக்கப் பயன்படுகிறது.
4. ஒரு ஃபிரேம்வொர்க் அல்லது லைப்ரரியைப் பயன்படுத்துதல்
பல நவீன ஜாவாஸ்கிரிப்ட் ஃபிரேம்வொர்க்குகள் மற்றும் லைப்ரரிகள் (எ.கா., ரியாக்ட், வ்யூ.ஜேஎஸ், ஆங்குலர்) நிலை மேலாண்மை மற்றும் வழிசெலுத்தலைக் கையாள்வதற்கான உள்ளமைக்கப்பட்ட வழிமுறைகளை வழங்குகின்றன. இந்த ஃபிரேம்வொர்க்குகள் பெரும்பாலும் ஹிஸ்டரி API-இன் சிக்கல்களை நீக்கி, நிலை மற்றும் மாற்றங்களைக் கையாள்வதற்கான உயர்-நிலை API-களை வழங்குகின்றன. ஒரு ஃபிரேம்வொர்க்கைப் பயன்படுத்தும்போது, நிலை நிலைத்தன்மை மற்றும் அனிமேஷன் மீட்புக்கான அதன் உள்ளமைக்கப்பட்ட அம்சங்களைப் பயன்படுத்திக் கொள்ளுங்கள்.
உதாரணமாக, ரியாக்டில், பயன்பாட்டின் நிலையைச் சேமித்து, பக்க வழிசெலுத்தல்களில் அதை நிலைநிறுத்த ரெட்யுக்ஸ் அல்லது ஜுஸ்டாண்ட் போன்ற நிலை மேலாண்மை லைப்ரரியைப் பயன்படுத்தலாம். பின்னர் நீங்கள் வழிசெலுத்தலை நிர்வகிக்கவும், பயன்பாட்டின் நிலையின் அடிப்படையில் வியூ டிரான்சிஷன்களைத் தூண்டவும் ரியாக்ட் ரவுட்டரைப் பயன்படுத்தலாம்.
நிலை நிலைத்தன்மையை செயல்படுத்துவதற்கான சிறந்த நடைமுறைகள்
- சேமிக்கப்படும் தரவின் அளவைக் குறைத்தல்: முந்தைய நிலையை மீண்டும் உருவாக்கத் தேவையான அத்தியாவசியத் தரவை மட்டுமே சேமிக்கவும். அதிக அளவு தரவைச் சேமிப்பது செயல்திறனைப் பாதிக்கும்.
- திறமையான தரவு சீரியலைசேஷனைப் பயன்படுத்துதல்: செஷன் ஸ்டோரேஜில் தரவைச் சேமிக்கும்போது, சேமிப்பக அளவைக் குறைக்க
JSON.stringify()
போன்ற திறமையான சீரியலைசேஷன் முறைகளைப் பயன்படுத்தவும். - விளிம்பு நிலைகளைக் கையாளுதல்: பயனர் முதன்முறையாக பக்கத்திற்குச் செல்லும்போது (அதாவது, முந்தைய நிலை இல்லாதபோது) போன்ற விளிம்பு நிலைகளைக் கருத்தில் கொள்ளுங்கள்.
- முழுமையாகச் சோதித்தல்: நிலை நிலைத்தன்மை மற்றும் அனிமேஷன் மீட்பு பொறிமுறையை வெவ்வேறு உலாவிகள் மற்றும் சாதனங்களில் சோதிக்கவும்.
- அணுகல்தன்மையைக் கருத்தில் கொள்ளுங்கள்: மாற்றங்கள் ஊனமுற்ற பயனர்களுக்கு அணுகக்கூடியதாக இருப்பதை உறுதிசெய்யவும். மாற்றங்கள் இடையூறாக இருந்தால், பயன்பாட்டை வழிநடத்த மாற்று வழிகளை வழங்கவும்.
குறியீடு உதாரணங்கள்: ஒரு ஆழமான பார்வை
முந்தைய உதாரணங்களை மேலும் விரிவான குறியீட்டுத் துணுக்குகளுடன் விரிவுபடுத்துவோம்.
உதாரணம் 1: விரிவான நிலையுடன் ஹிஸ்டரி API
// Initial state
let currentState = {
page: 'home',
data: {},
scrollPosition: 0 // Example: Store scroll position
};
function updateTheDOM(newState) {
// Update the DOM based on newState (replace with your actual logic)
console.log('Updating DOM to:', newState);
document.getElementById('content').innerHTML = `Navigated to: ${newState.page}
`;
window.scrollTo(0, newState.scrollPosition); // Restore scroll position
}
function navigateTo(page) {
document.startViewTransition(() => {
// 1. Update the DOM
currentState = {
page: page,
data: {},
scrollPosition: 0 // Reset scroll, or preserve it
};
updateTheDOM(currentState);
// 2. Push new state to history
history.pushState(currentState, null, '#' + page); // Use hash for simple routing
});
}
window.addEventListener('popstate', (event) => {
document.startViewTransition(() => {
// 1. Revert to the previous state
const state = event.state;
if (state) {
currentState = state;
updateTheDOM(currentState);
} else {
// Handle initial page load (no state yet)
navigateTo('home'); // Or another default state
}
});
});
// Initial load: Replace initial state to prevent back button issues
history.replaceState(currentState, null, '#home');
// Example usage:
document.getElementById('link-about').addEventListener('click', (e) => {
e.preventDefault();
navigateTo('about');
});
document.getElementById('link-contact').addEventListener('click', (e) => {
e.preventDefault();
navigateTo('contact');
});
விளக்கம்:
currentState
ஆப்ஜெக்ட் இப்போது தற்போதைய பக்கம், தன்னிச்சையான தரவு மற்றும் ஸ்க்ரோல் நிலை போன்ற மேலும் குறிப்பிட்ட தகவல்களைக் கொண்டுள்ளது. இது மேலும் முழுமையான நிலை மீட்டமைப்பை செயல்படுத்துகிறது.updateTheDOM
செயல்பாடு DOM-ஐப் புதுப்பிப்பதைப் உருவகப்படுத்துகிறது. உங்கள் உண்மையான DOM கையாளுதல் குறியீட்டுடன் பிளேஸ்ஹோல்டர் லாஜிக்கை மாற்றவும். முக்கியமாக, இது ஸ்க்ரோல் நிலையையும் மீட்டெடுக்கிறது.- ஆரம்ப ஏற்றத்தில்
history.replaceState
முக்கியமானது, ஏனெனில் ஆரம்ப ஏற்றத்தில் பின் பொத்தான் உடனடியாக ஒரு வெற்றுப் பக்கத்திற்குத் திரும்புவதைத் தவிர்க்கிறது. - இந்த எடுத்துக்காட்டு எளிமைக்காக ஹாஷ்-அடிப்படையிலான ரூட்டிங்கைப் பயன்படுத்துகிறது. ஒரு நிஜ-உலக பயன்பாட்டில், நீங்கள் மேலும் வலுவான ரூட்டிங் வழிமுறைகளைப் பயன்படுத்தலாம்.
உதாரணம் 2: கேச்சிங்குடன் பேஜ் விசிபிலிட்டி API
let cachedDOM = null;
function captureDOM() {
// Clone the relevant part of the DOM
const contentElement = document.getElementById('content');
cachedDOM = contentElement.cloneNode(true); // Deep clone
}
function restoreDOM() {
if (cachedDOM) {
const contentElement = document.getElementById('content');
contentElement.parentNode.replaceChild(cachedDOM, contentElement); // Replace with cached version
cachedDOM = null; // Clear cache
} else {
console.warn('No cached DOM to restore.');
}
}
document.addEventListener('visibilitychange', () => {
if (document.visibilityState === 'hidden') {
captureDOM(); // Capture DOM before hiding
}
if (document.visibilityState === 'visible') {
document.startViewTransition(() => {
restoreDOM(); // Restore DOM on becoming visible
});
}
});
// Example usage (simulate navigation)
function navigateAway() {
document.getElementById('content').innerHTML = 'Navigating away...
';
// Simulate a delay (e.g., AJAX request)
setTimeout(() => {
//In a real app, you might navigate to a different page here.
console.log("Simulated navigation away.");
}, 1000);
}
document.getElementById('navigate').addEventListener('click', navigateAway);
விளக்கம்:
- இந்த எடுத்துக்காட்டு DOM-ஐ குளோனிங் மற்றும் மீட்டெடுப்பதில் கவனம் செலுத்துகிறது. இது ஒரு எளிமைப்படுத்தப்பட்ட அணுகுமுறை மற்றும் அனைத்து சூழ்நிலைகளுக்கும், குறிப்பாக சிக்கலான SPA-களுக்கும் பொருந்தாது.
captureDOM
செயல்பாடு#content
உறுப்பைக் குளோன் செய்கிறது. அனைத்து குழந்தை உறுப்புகள் மற்றும் அவற்றின் பண்புகளைப் பிடிக்க டீப் குளோனிங் முக்கியமானது.restoreDOM
செயல்பாடு தற்போதைய#content
-ஐ கேச் செய்யப்பட்ட பதிப்பைக் கொண்டு மாற்றுகிறது.navigateAway
செயல்பாடு வழிசெலுத்தலை உருவகப்படுத்துகிறது (நீங்கள் பொதுவாக இதை உண்மையான வழிசெலுத்தல் லாஜிக்குடன் மாற்றுவீர்கள்).
மேம்பட்ட பரிசீலனைகள்
1. கிராஸ்-ஆரிஜின் டிரான்சிஷன்கள்
வியூ டிரான்சிஷன்கள் முதன்மையாக ஒரே ஆரிஜினுக்குள் மாற்றங்களுக்காக வடிவமைக்கப்பட்டுள்ளன. கிராஸ்-ஆரிஜின் டிரான்சிஷன்கள் (எ.கா., வெவ்வேறு டொமைன்களுக்கு இடையில் மாறுதல்) பொதுவாக மிகவும் சிக்கலானவை மற்றும் iframes அல்லது சர்வர்-சைட் ரெண்டரிங் போன்ற வெவ்வேறு அணுகுமுறைகள் தேவைப்படலாம்.
2. செயல்திறன் மேம்படுத்தல்
வியூ டிரான்சிஷன்கள் கவனமாக செயல்படுத்தப்படாவிட்டால் செயல்திறனைப் பாதிக்கலாம். மாற்றங்களை மேம்படுத்துவதன் மூலம்:
- மாற்றப்படும் DOM உறுப்புகளின் அளவைக் குறைத்தல்: சிறிய DOM உறுப்புகள் வேகமான மாற்றங்களை விளைவிக்கின்றன.
- வன்பொருள் முடுக்கத்தைப் பயன்படுத்துதல்: வன்பொருள் முடுக்கத்தைத் தூண்டும் CSS பண்புகளைப் பயன்படுத்தவும் (எ.கா.,
transform: translate3d(0, 0, 0);
). - டிரான்சிஷன்களை டீபவுன்சிங் செய்தல்: பயனர் விரைவாக பக்கங்களுக்கு இடையில் செல்லும்போது அதிகப்படியான மாற்றங்களைத் தவிர்க்க டிரான்சிஷன் தூண்டும் லாஜிக்கை டீபவுன்ஸ் செய்யவும்.
3. அணுகல்தன்மை
வியூ டிரான்சிஷன்கள் ஊனமுற்ற பயனர்களுக்கு அணுகக்கூடியதாக இருப்பதை உறுதிசெய்யவும். மாற்றங்கள் இடையூறாக இருந்தால், பயன்பாட்டை வழிநடத்த மாற்று வழிகளை வழங்கவும். ஸ்கிரீன் ரீடர்களுக்கு கூடுதல் சூழலை வழங்க ARIA பண்புகளைப் பயன்படுத்துவதைக் கருத்தில் கொள்ளுங்கள்.
நிஜ-உலக உதாரணங்கள் மற்றும் பயன்பாட்டு வழக்குகள்
- இ-காமர்ஸ் தயாரிப்பு கேலரிகள்: தயாரிப்புப் படங்களுக்கு இடையில் மென்மையான மாற்றங்கள்.
- செய்திக் கட்டுரைகள்: ஒரு கட்டுரையின் வெவ்வேறு பிரிவுகளுக்கு இடையில் தடையற்ற வழிசெலுத்தல்.
- இன்டராக்டிவ் டாஷ்போர்டுகள்: வெவ்வேறு தரவு காட்சிப்படுத்தல்களுக்கு இடையில் திரவ மாற்றங்கள்.
- வலைப் பயன்பாடுகளில் மொபைல் ஆப் போன்ற வழிசெலுத்தல்: ஒரு உலாவிக்குள் நேட்டிவ் ஆப் மாற்றங்களை உருவகப்படுத்துதல்.
முடிவுரை
CSS வியூ டிரான்சிஷன்கள், நிலை நிலைத்தன்மை மற்றும் அனிமேஷன் மீட்பு நுட்பங்களுடன் இணைந்து, வலைப் பயன்பாடுகளின் பயனர் அனுபவத்தை மேம்படுத்துவதற்கான ஒரு சக்திவாய்ந்த வழியை வழங்குகின்றன. உலாவியின் ஹிஸ்டரியை கவனமாகக் கையாள்வதன் மூலமும், பேஜ் விசிபிலிட்டி API போன்ற API-களைப் பயன்படுத்துவதன் மூலமும், டெவலப்பர்கள் வலைப் பயன்பாடுகளை மேலும் பதிலளிக்கக்கூடியதாகவும் ஈடுபாட்டுடனும் உணரவைக்கும் தடையற்ற மற்றும் பார்வைக்கு ஈர்க்கக்கூடிய மாற்றங்களை உருவாக்க முடியும். வியூ டிரான்சிஷன் API முதிர்ச்சியடைந்து மேலும் பரவலாக ஆதரிக்கப்படும்போது, அது சந்தேகத்திற்கு இடமின்றி நவீன வலை மேம்பாட்டிற்கான ஒரு அத்தியாவசியக் கருவியாக மாறும்.