SPA నావిగేషన్, హిస్టరీ మరియు వెబ్ అప్లికేషన్లలో మెరుగైన వినియోగదారు అనుభవాలను నిర్వహించడానికి ఆధునిక బ్రౌజర్ API అయిన నావిగేషన్ APIని అన్వేషించండి. ఆచరణాత్మక ఉదాహరణలతో దాని ఫీచర్లను అమలు చేయడం మరియు ఉపయోగించడం నేర్చుకోండి.
నావిగేషన్ API: సింగిల్ పేజ్ అప్లికేషన్ రౌటింగ్ మరియు హిస్టరీ మేనేజ్మెంట్లో విప్లవాత్మక మార్పులు
సింగిల్ పేజ్ అప్లికేషన్లు (SPAs) ఆధునిక వెబ్ డెవలప్మెంట్కు మూలస్తంభంగా మారాయి, వినియోగదారులకు సున్నితమైన మరియు ప్రతిస్పందించే అనుభవాన్ని అందిస్తున్నాయి. అయితే, SPAలలో నావిగేషన్ మరియు హిస్టరీని నిర్వహించడం సంక్లిష్టంగా ఉంటుంది, తరచుగా థర్డ్-పార్టీ లైబ్రరీలు మరియు కస్టమ్ సొల్యూషన్స్పై ఆధారపడి ఉంటుంది. నావిగేషన్ API, సాపేక్షంగా కొత్త బ్రౌజర్ API, SPA రౌటింగ్ మరియు హిస్టరీ మేనేజ్మెంట్ను నిర్వహించడానికి ఒక ప్రామాణికమైన మరియు మరింత సమర్థవంతమైన మార్గాన్ని అందిస్తుంది, డెవలపర్లకు ఎక్కువ నియంత్రణ మరియు మెరుగైన పనితీరును అందిస్తుంది.
నావిగేషన్ API అంటే ఏమిటి?
నావిగేషన్ API అనేది వెబ్ అప్లికేషన్లు నావిగేషన్ మరియు హిస్టరీని ఎలా నిర్వహిస్తాయో సరళీకృతం చేయడానికి మరియు ప్రామాణీకరించడానికి రూపొందించిన బ్రౌజర్ API. ఇది బ్రౌజర్ యొక్క నావిగేషన్ హిస్టరీతో పరస్పర చర్య చేయడానికి ఒక ప్రోగ్రామాటిక్ ఇంటర్ఫేస్ను అందిస్తుంది, ఇది డెవలపర్లను అనుమతిస్తుంది:
- పూర్తి పేజీ రీలోడ్లు లేకుండా SPAలోని విభిన్న స్టేట్ల మధ్య నావిగేట్ చేయడం.
- బ్రౌజర్ యొక్క హిస్టరీ స్టాక్ను మార్చడం.
- బ్యాక్/ఫార్వర్డ్ బటన్ క్లిక్ల వంటి నావిగేషన్ ఈవెంట్లకు ప్రతిస్పందించడం.
- నావిగేషన్ అభ్యర్థనలను అడ్డగించడం మరియు సవరించడం.
నావిగేషన్ APIని ఉపయోగించడం ద్వారా, డెవలపర్లు మెరుగైన వినియోగదారు అనుభవాలతో మరింత దృఢమైన మరియు నిర్వహించదగిన SPAలను సృష్టించవచ్చు.
నావిగేషన్ APIని ఎందుకు ఉపయోగించాలి?
సాంప్రదాయకంగా, SPAలు నావిగేషన్ను నిర్వహించడానికి హ్యాష్-ఆధారిత రౌటింగ్ లేదా హిస్టరీ API (`history.pushState`, `history.replaceState`) వంటి టెక్నిక్లపై ఆధారపడ్డాయి. ఈ విధానాలు ప్రభావవంతంగా ఉన్నప్పటికీ, అవి తరచుగా పరిమితులు మరియు సంక్లిష్టతలతో వస్తాయి. నావిగేషన్ API ఈ పాత పద్ధతులపై అనేక ప్రయోజనాలను అందిస్తుంది:
- ప్రామాణీకరణ: నావిగేషన్ API ఒక ప్రామాణిక ఇంటర్ఫేస్ను అందిస్తుంది, ఇది కస్టమ్ సొల్యూషన్స్ మరియు లైబ్రరీ డిపెండెన్సీల అవసరాన్ని తగ్గిస్తుంది.
- మెరుగైన పనితీరు: నావిగేషన్ హ్యాండ్లింగ్ను క్రమబద్ధీకరించడం ద్వారా, API SPAల పనితీరును మెరుగుపరుస్తుంది, జాప్యాన్ని తగ్గించి మరియు ప్రతిస్పందనను మెరుగుపరుస్తుంది.
- మెరుగైన నియంత్రణ: డెవలపర్లు నావిగేషన్ ఈవెంట్లు మరియు హిస్టరీ మానిప్యులేషన్పై మరింత సూక్ష్మ-స్థాయి నియంత్రణను పొందుతారు.
- సరళీకృత అభివృద్ధి: నావిగేషన్ను నిర్వహించడానికి స్పష్టమైన మరియు స్థిరమైన మార్గాన్ని అందించడం ద్వారా API అభివృద్ధి ప్రక్రియను సులభతరం చేస్తుంది.
- ఫ్యూచర్-ప్రూఫింగ్: నావిగేషన్ API అనేది ఒక ఆధునిక బ్రౌజర్ API, ఇది భవిష్యత్ వెబ్ ప్రమాణాలు మరియు బ్రౌజర్ అప్డేట్లతో అనుకూలతను నిర్ధారిస్తుంది.
నావిగేషన్ API యొక్క ముఖ్య భావనలు
నావిగేషన్ API యొక్క ముఖ్య భావనలను అర్థం చేసుకోవడం సమర్థవంతమైన అమలుకు కీలకం. ఇక్కడ ముఖ్యమైన భాగాలు ఉన్నాయి:
1. `navigation` ఆబ్జెక్ట్
`navigation` ఆబ్జెక్ట్ అనేది నావిగేషన్ APIకి కేంద్ర ప్రవేశ స్థానం. ఇది నావిగేషన్ హిస్టరీ మరియు ఈవెంట్లను నిర్వహించడానికి వివిధ మెథడ్స్ మరియు ప్రాపర్టీలకు యాక్సెస్ను అందిస్తుంది. మీరు బ్రౌజర్ యొక్క `window` ఆబ్జెక్ట్లోని గ్లోబల్ `navigation` ప్రాపర్టీ ద్వారా దీనిని యాక్సెస్ చేయవచ్చు.
ఉదాహరణ:
const navigation = window.navigation;
console.log(navigation);
2. `navigate` ఈవెంట్
లింక్ను క్లిక్ చేయడం, ఫారమ్ను సమర్పించడం లేదా బ్యాక్/ఫార్వర్డ్ బటన్లను ఉపయోగించడం వంటి నావిగేషన్ చర్య జరిగినప్పుడు `navigate` ఈవెంట్ ఫైర్ అవుతుంది. ఈ ఈవెంట్ నావిగేషన్ అభ్యర్థన గురించి సమాచారాన్ని అందిస్తుంది మరియు దానిని అడ్డగించడానికి మరియు సవరించడానికి మిమ్మల్ని అనుమతిస్తుంది.
ఉదాహరణ:
navigation.addEventListener('navigate', (event) => {
console.log('Navigation event:', event);
});
3. `intercept` మెథడ్
`intercept` మెథడ్ నావిగేషన్ అభ్యర్థనను అడ్డగించడానికి మరియు డేటాను పొందడం, UIని అప్డేట్ చేయడం లేదా నావిగేషన్ కొనసాగకుండా నిరోధించడం వంటి కస్టమ్ చర్యలను చేయడానికి మిమ్మల్ని అనుమతిస్తుంది. మీరు పూర్తి పేజీ రీలోడ్లు లేకుండా అంతర్గతంగా నావిగేషన్ను నిర్వహించాలనుకునే SPAలకు ఇది ప్రత్యేకంగా ఉపయోగపడుతుంది.
ఉదాహరణ:
navigation.addEventListener('navigate', (event) => {
if (event.destination.url.startsWith('/app')) {
event.intercept({
handler: async () => {
// Fetch data and update the UI
const data = await fetchData(event.destination.url);
updateUI(data);
},
});
}
});
4. `destination` ప్రాపర్టీ
`navigate` ఈవెంట్ యొక్క `destination` ప్రాపర్టీ నావిగేషన్ అభ్యర్థన యొక్క లక్ష్యం గురించి URL, ఆరిజిన్ మరియు రిఫరర్తో సహా సమాచారాన్ని అందిస్తుంది.
ఉదాహరణ:
navigation.addEventListener('navigate', (event) => {
console.log('Destination URL:', event.destination.url);
console.log('Destination Origin:', event.destination.origin);
});
5. `entries` ప్రాపర్టీ
`entries` ప్రాపర్టీ ప్రస్తుత నావిగేషన్ హిస్టరీ ఎంట్రీలకు యాక్సెస్ను అందిస్తుంది. ఇది హిస్టరీ స్టాక్ను తనిఖీ చేయడానికి మరియు వివిధ ఎంట్రీల మధ్య ప్రోగ్రామాటిక్గా నావిగేట్ చేయడానికి మిమ్మల్ని అనుమతిస్తుంది.
ఉదాహరణ:
const entries = navigation.entries();
console.log('Navigation history entries:', entries);
6. `traverseTo` మెథడ్
`traverseTo` మెథడ్ నావిగేషన్ హిస్టరీలోని ఒక నిర్దిష్ట ఎంట్రీకి నావిగేట్ చేయడానికి మిమ్మల్ని అనుమతిస్తుంది. మీరు ఎంట్రీని దాని ID లేదా ఇండెక్స్ ద్వారా పేర్కొనవచ్చు.
ఉదాహరణ:
// Navigate to the previous entry
navigation.traverseTo(navigation.currentEntry.index - 1);
7. `back` మరియు `forward` మెథడ్స్
`back` మరియు `forward` మెథడ్స్ బ్రౌజర్ యొక్క బ్యాక్ మరియు ఫార్వర్డ్ బటన్ల మాదిరిగానే నావిగేషన్ హిస్టరీలో వెనుకకు మరియు ముందుకు నావిగేట్ చేయడానికి అనుకూలమైన మార్గాన్ని అందిస్తాయి.
ఉదాహరణ:
// Navigate back
navigation.back();
// Navigate forward
navigation.forward();
8. `updateCurrentEntry` మెథడ్
`updateCurrentEntry` మెథడ్ ప్రస్తుత నావిగేషన్ ఎంట్రీతో అనుబంధించబడిన స్టేట్ను అప్డేట్ చేయడానికి మిమ్మల్ని అనుమతిస్తుంది. ప్రస్తుత పేజీ లేదా వీక్షణకు సంబంధించిన డేటా లేదా మెటాడేటాను నిల్వ చేయడానికి ఇది ఉపయోగపడుతుంది.
ఉదాహరణ:
navigation.updateCurrentEntry({
state: { pageTitle: 'New Page Title' },
});
SPAలో నావిగేషన్ APIని అమలు చేయడం
SPAలో నావిగేషన్ APIని అమలు చేయడానికి, మీరు సాధారణంగా ఈ దశలను అనుసరిస్తారు:
- నావిగేషన్ APIని ప్రారంభించడం: `navigation` ఆబ్జెక్ట్ను యాక్సెస్ చేసి, `navigate` ఈవెంట్ కోసం ఈవెంట్ లిజనర్లను జోడించండి.
- నావిగేషన్ అభ్యర్థనలను అడ్డగించడం: నావిగేషన్ అభ్యర్థనలను అంతర్గతంగా నిర్వహించడానికి `intercept` మెథడ్ను ఉపయోగించండి.
- డేటాను పొందడం మరియు UIని అప్డేట్ చేయడం: `intercept` హ్యాండ్లర్లో, అవసరమైన డేటాను పొంది, దానికి అనుగుణంగా UIని అప్డేట్ చేయండి.
- హిస్టరీని నిర్వహించడం: నావిగేషన్ హిస్టరీని నిర్వహించడానికి `traverseTo`, `back`, మరియు `forward` మెథడ్స్ను ఉపయోగించండి.
- ప్రస్తుత ఎంట్రీ స్టేట్ను అప్డేట్ చేయడం: ప్రతి నావిగేషన్ ఎంట్రీతో అనుబంధించబడిన స్టేట్ను నిల్వ చేయడానికి మరియు తిరిగి పొందడానికి `updateCurrentEntry` మెథడ్ను ఉపయోగించండి.
సాధారణ SPAలో నావిగేషన్ APIని ఎలా అమలు చేయాలో ఇక్కడ ఒక ప్రాథమిక ఉదాహరణ ఉంది:
// Initialize the Navigation API
const navigation = window.navigation;
const contentDiv = document.getElementById('content');
// Function to fetch data (replace with your actual data fetching logic)
async function fetchData(url) {
// Simulate fetching data from an API
return new Promise((resolve) => {
setTimeout(() => {
const pageContent = `<h2>Content for ${url}</h2><p>This is the content for the page ${url}.</p>`;
resolve(pageContent);
}, 500);
});
}
// Function to update the UI
function updateUI(content) {
contentDiv.innerHTML = content;
}
// Add event listener for the navigate event
navigation.addEventListener('navigate', (event) => {
if (event.destination.url.startsWith('/page')) {
event.intercept({
handler: async () => {
// Fetch data and update the UI
const content = await fetchData(event.destination.url);
updateUI(content);
},
});
}
});
// Initial load (optional, if you have a default page)
async function initialLoad() {
if (navigation.currentEntry.url === '/') {
const content = await fetchData('/page1');
updateUI(content);
}
}
initialLoad();
ఈ ఉదాహరణ `/page`తో ప్రారంభమయ్యే URLల కోసం నావిగేషన్ అభ్యర్థనలను ఎలా అడ్డగించాలో మరియు `contentDiv` ఎలిమెంట్ యొక్క కంటెంట్ను డైనమిక్గా ఎలా అప్డేట్ చేయాలో చూపిస్తుంది. మీరు ఈ ఉదాహరణను మీ నిర్దిష్ట SPA అవసరాలకు అనుగుణంగా మార్చుకోవచ్చు.
ఆచరణాత్మక ఉదాహరణలు మరియు వినియోగ సందర్భాలు
వినియోగదారు అనుభవాన్ని మెరుగుపరచడానికి మరియు SPAల పనితీరును మెరుగుపరచడానికి నావిగేషన్ APIని వివిధ సందర్భాలలో ఉపయోగించవచ్చు. ఇక్కడ కొన్ని ఆచరణాత్మక ఉదాహరణలు ఉన్నాయి:
1. డైనమిక్ కంటెంట్ లోడింగ్
ప్రస్తుత URL ఆధారంగా కంటెంట్ను డైనమిక్గా లోడ్ చేయడానికి నావిగేషన్ APIని ఉపయోగించవచ్చు. ఇది పూర్తి పేజీ రీలోడ్లు లేకుండా బహుళ వీక్షణలు లేదా విభాగాలతో SPAలను సృష్టించడానికి మిమ్మల్ని అనుమతిస్తుంది. ఉదాహరణకు, ఒక ఈ-కామర్స్ సైట్ వివిధ ఉత్పత్తి వర్గాలు లేదా వివరాల పేజీలను లోడ్ చేయడానికి దీనిని ఉపయోగించవచ్చు.
2. ఫారమ్ హ్యాండ్లింగ్
APIని ఫారమ్ సమర్పణలను అడ్డగించడానికి మరియు ప్రస్తుత పేజీ నుండి నావిగేట్ చేయకుండా అంతర్గతంగా వాటిని నిర్వహించడానికి ఉపయోగించవచ్చు. ఇది తక్షణ ఫీడ్బ్యాక్ మరియు ధృవీకరణను అందించడం ద్వారా వినియోగదారు అనుభవాన్ని మెరుగుపరుస్తుంది.
3. స్క్రోల్ పునరుద్ధరణ
హిస్టరీలో వెనుకకు లేదా ముందుకు నావిగేట్ చేస్తున్నప్పుడు, మునుపటి పేజీ యొక్క స్క్రోల్ పొజిషన్ను పునరుద్ధరించడానికి నావిగేషన్ APIని ఉపయోగించవచ్చు. ఇది వినియోగదారు గతంలో చూస్తున్న పేజీలోని అదే పాయింట్కు తిరిగి వస్తారని నిర్ధారిస్తుంది.
4. ఆఫ్లైన్ మద్దతు
డేటా మరియు ఆస్తులను క్యాచింగ్ చేయడం ద్వారా మరియు వినియోగదారు ఇంటర్నెట్కు కనెక్ట్ కానప్పుడు కూడా నావిగేషన్ అభ్యర్థనలను నిర్వహించడం ద్వారా ఆఫ్లైన్ మద్దతును అందించడానికి APIని ఉపయోగించవచ్చు.
5. ట్రాన్సిషన్ యానిమేషన్స్
సున్నితమైన మరియు దృశ్యపరంగా ఆకట్టుకునే నావిగేషన్ ప్రభావాలను సృష్టించడానికి నావిగేషన్ APIని CSS ట్రాన్సిషన్స్ లేదా జావాస్క్రిప్ట్ యానిమేషన్లతో ఇంటిగ్రేట్ చేయవచ్చు.
బ్రౌజర్ అనుకూలత
నావిగేషన్ API సాపేక్షంగా కొత్త API మరియు అన్ని బ్రౌజర్లచే పూర్తిగా మద్దతు ఇవ్వబడకపోవచ్చు. ప్రొడక్షన్లో అమలు చేసే ముందు తాజా బ్రౌజర్ అనుకూలత పట్టికలను (ఉదా., CanIUse.comలో) తనిఖీ చేయండి. పాత బ్రౌజర్లకు మద్దతును అందించడానికి పాలిఫిల్స్ అందుబాటులో ఉండవచ్చు, కానీ క్షుణ్ణంగా పరీక్షించడం చాలా అవసరం.
హిస్టరీ APIతో పోలిక
హిస్టరీ API (`history.pushState`, `history.replaceState`, `popstate` ఈవెంట్) SPA రౌటింగ్కు ప్రమాణంగా ఉన్నప్పటికీ, నావిగేషన్ API అనేక ప్రయోజనాలను అందిస్తుంది. హిస్టరీ API ప్రధానంగా బ్రౌజర్ యొక్క హిస్టరీ స్టాక్ను మార్చడంపై దృష్టి పెడుతుంది, అయితే నావిగేషన్ API అంతరాయం, మార్పు మరియు ఈవెంట్ హ్యాండ్లింగ్తో సహా నావిగేషన్ నిర్వహణకు మరింత సమగ్రమైన విధానాన్ని అందిస్తుంది.
ముఖ్యమైన తేడాలను సంగ్రహించే పట్టిక ఇక్కడ ఉంది:
ఫీచర్ | హిస్టరీ API | నావిగేషన్ API |
---|---|---|
నావిగేషన్ హ్యాండ్లింగ్ | ప్రధానంగా హిస్టరీ స్టాక్ను మారుస్తుంది | సమగ్ర నావిగేషన్ నిర్వహణ (అడ్డగించడం, సవరించడం, ఈవెంట్లు) |
ఈవెంట్ హ్యాండ్లింగ్ | `popstate` ఈవెంట్ | `navigate` ఈవెంట్ |
అడ్డగించడం | పరిమితం | పూర్తి నియంత్రణ కోసం `intercept` మెథడ్ |
ప్రామాణీకరణ | స్థాపించబడింది కానీ తక్కువ నిర్మాణాత్మకం | ప్రామాణీకరించబడింది మరియు మరింత నిర్మాణాత్మకం |
సంక్లిష్టత | అధునాతన రౌటింగ్ కోసం సంక్లిష్టంగా ఉంటుంది | ఆధునిక SPA అవసరాల కోసం సరళీకృతం చేయబడింది |
ప్రపంచవ్యాప్త పరిగణనలు
ప్రపంచవ్యాప్త సందర్భంలో నావిగేషన్ APIని అమలు చేస్తున్నప్పుడు, కింది వాటిని పరిగణించండి:
- స్థానికీకరణ: మీ రౌటింగ్ లాజిక్ మరియు UI అప్డేట్లు వివిధ భాషలు మరియు ప్రాంతాల కోసం సరిగ్గా స్థానికీకరించబడ్డాయని నిర్ధారించుకోండి.
- యాక్సెసిబిలిటీ: WCAG మార్గదర్శకాలను అనుసరించి, వికలాంగులైన వినియోగదారులకు మీ నావిగేషన్ అందుబాటులో ఉండేలా రూపొందించండి.
- పనితీరు: జాప్యాన్ని తగ్గించడానికి మరియు ముఖ్యంగా నెమ్మదిగా ఇంటర్నెట్ కనెక్షన్లు ఉన్న వినియోగదారుల కోసం సున్నితమైన వినియోగదారు అనుభవాన్ని నిర్ధారించడానికి మీ డేటా ఫెచింగ్ మరియు UI రెండరింగ్ను ఆప్టిమైజ్ చేయండి. పనితీరును మెరుగుపరచడానికి కోడ్ స్ప్లిటింగ్ మరియు లేజీ లోడింగ్ వంటి టెక్నిక్లను ఉపయోగించడాన్ని పరిగణించండి.
- URL నిర్మాణం: వివిధ ప్రాంతాలలో SEO మరియు వినియోగదారు అనుభవంపై మీ URL నిర్మాణం యొక్క ప్రభావాన్ని పరిగణించండి. సులభంగా అర్థం చేసుకోగలిగే మరియు గుర్తుంచుకోగలిగే అర్థవంతమైన మరియు వివరణాత్మక URLలను ఉపయోగించండి.
ఉత్తమ పద్ధతులు
నావిగేషన్ APIతో పనిచేసేటప్పుడు అనుసరించాల్సిన కొన్ని ఉత్తమ పద్ధతులు ఇక్కడ ఉన్నాయి:
- స్థిరమైన రౌటింగ్ వ్యూహాన్ని ఉపయోగించండి: మీ SPA కోసం స్పష్టమైన మరియు స్థిరమైన రౌటింగ్ వ్యూహాన్ని ఎంచుకోండి మరియు మీ అప్లికేషన్ అంతటా దానికి కట్టుబడి ఉండండి.
- లోపాలను సున్నితంగా నిర్వహించండి: నావిగేషన్ సమయంలో సంభవించే ఏవైనా మినహాయింపులను పట్టుకోవడానికి మరియు వినియోగదారుకు సమాచార లోప సందేశాలను అందించడానికి ఎర్రర్ హ్యాండ్లింగ్ను అమలు చేయండి.
- క్షుణ్ణంగా పరీక్షించండి: అన్ని బ్రౌజర్లు మరియు దృశ్యాలలో ఇది సరిగ్గా పనిచేస్తుందని నిర్ధారించుకోవడానికి మీ నావిగేషన్ లాజిక్ను క్షుణ్ణంగా పరీక్షించండి.
- మీ కోడ్ను డాక్యుమెంట్ చేయండి: నిర్వహించడం మరియు అర్థం చేసుకోవడం సులభం చేయడానికి మీ కోడ్ను స్పష్టంగా డాక్యుమెంట్ చేయండి.
- సరళంగా ఉంచండి: మీ నావిగేషన్ లాజిక్ను అతిగా సంక్లిష్టం చేయకుండా ఉండండి. మీ కోడ్ ఎంత సరళంగా ఉంటే, దానిని నిర్వహించడం మరియు డీబగ్ చేయడం అంత సులభం అవుతుంది.
ముగింపు
నావిగేషన్ API సింగిల్ పేజ్ అప్లికేషన్లలో రౌటింగ్ మరియు హిస్టరీని నిర్వహించడానికి ఒక శక్తివంతమైన మరియు ప్రామాణికమైన మార్గాన్ని అందిస్తుంది. దాని లక్షణాలను ఉపయోగించడం ద్వారా, డెవలపర్లు మెరుగైన వినియోగదారు అనుభవాలతో మరింత దృఢమైన, నిర్వహించదగిన మరియు పనితీరు గల SPAలను సృష్టించవచ్చు. బ్రౌజర్ అనుకూలత ఇప్పటికీ ఒక పరిగణన అయినప్పటికీ, నావిగేషన్ API యొక్క ప్రయోజనాలు ఆధునిక వెబ్ అభివృద్ధికి విలువైన సాధనంగా చేస్తాయి. బ్రౌజర్ మద్దతు పెరుగుతూనే ఉన్నందున, నావిగేషన్ API SPA అభివృద్ధి ల్యాండ్స్కేప్లో అంతకంతకూ ముఖ్యమైన భాగంగా మారుతుందని ఆశించండి.
SPA అభివృద్ధిలో కొత్త అవకాశాలను అన్లాక్ చేయడానికి మరియు ప్రపంచవ్యాప్తంగా వినియోగదారులకు అసాధారణమైన వెబ్ అనుభవాలను అందించడానికి నావిగేషన్ APIని స్వీకరించండి.