తెలుగు

Next.js లోడింగ్ UI లో నైపుణ్యం సాధించి, సులభమైన రూట్ ట్రాన్సిషన్‌లను పొందండి. ఈ గైడ్ ప్రపంచవ్యాప్తంగా అద్భుతమైన యూజర్ అనుభవాలను సృష్టించడానికి ఉత్తమ పద్ధతులు, అంతర్జాతీయ పరిగణనలు మరియు ఆచరణాత్మక అమలును వివరిస్తుంది.

Next.js లోడింగ్ UI: ప్రపంచ ప్రేక్షకుల కోసం రూట్ ట్రాన్సిషన్ ఫీడ్‌బ్యాక్‌ను మెరుగుపరచడం

వెబ్ డెవలప్‌మెంట్ యొక్క డైనమిక్ ప్రపంచంలో, వినియోగదారులకు తక్షణ మరియు స్పష్టమైన ఫీడ్‌బ్యాక్ అందించడం సానుకూల అనుభవానికి చాలా ముఖ్యం. ముఖ్యంగా Next.js వంటి ఫ్రేమ్‌వర్క్‌లతో నిర్మించిన సింగిల్ పేజ్ అప్లికేషన్‌లకు (SPAలు) ఇది వర్తిస్తుంది, ఇక్కడ వేర్వేరు రూట్‌ల మధ్య నావిగేట్ చేయడం తక్షణమే జరిగినట్లు అనిపిస్తుంది. అయితే, సరైన లోడింగ్ సూచికలు లేకుండా, వినియోగదారులు గందరగోళానికి గురికావచ్చు లేదా ప్రతిస్పందన లేదని భావించవచ్చు. ఈ సమగ్ర గైడ్ Next.js లోడింగ్ UI యొక్క సూక్ష్మ నైపుణ్యాలను వివరిస్తుంది, వైవిధ్యమైన, ప్రపంచ ప్రేక్షకులకు రూట్ ట్రాన్సిషన్ పురోగతిని ఎలా సమర్థవంతంగా తెలియజేయాలో దృష్టి పెడుతుంది.

లోడింగ్ ఫీడ్‌బ్యాక్ ప్రాముఖ్యతను అర్థం చేసుకోవడం

ఆధునిక వెబ్ అప్లికేషన్లు ఒక ఫ్లూయిడ్, యాప్ లాంటి అనుభవాన్ని అందించడానికి ప్రయత్నిస్తాయి. వినియోగదారులు తక్షణ సంతృప్తిని ఆశిస్తారు; కొన్ని సెకన్ల ఆలస్యం కూడా నిరాశకు మరియు అప్లికేషన్‌ను వదిలివేయడానికి దారితీయవచ్చు. Next.jsలో, ఒక వినియోగదారు పేజీల మధ్య నావిగేట్ చేసినప్పుడు, డేటా ఫెచింగ్, కోడ్ స్ప్లిటింగ్ మరియు రెండరింగ్ తెరవెనుక జరుగుతాయి. Next.js అత్యంత ఆప్టిమైజ్ చేయబడినప్పటికీ, ఈ ప్రక్రియలకు ఇంకా సమయం పడుతుంది. లోడింగ్ UI ఒక కీలకమైన వారధిగా పనిచేస్తుంది, ఒక చర్య జరుగుతోందని వినియోగదారులకు తెలియజేస్తుంది మరియు అప్లికేషన్ పనిచేస్తుందని దృశ్య నిర్ధారణను అందిస్తుంది.

ఒక ప్రపంచ ప్రేక్షకుల కోసం, స్పష్టమైన ఫీడ్‌బ్యాక్ యొక్క ప్రాముఖ్యత మరింత పెరుగుతుంది. వేర్వేరు ప్రాంతాలలో విభిన్న ఇంటర్నెట్ వేగాలు, విభిన్న పరికర సామర్థ్యాలు మరియు విభిన్న వినియోగదారు అంచనాల వంటి అంశాలు ఒక బలమైన మరియు సహజమైన లోడింగ్ మెకానిజంను అవసరం చేస్తాయి. చక్కగా అమలు చేయబడిన లోడింగ్ స్టేట్ గ్రహించిన పనితీరును మెరుగుపరచడమే కాకుండా, వినియోగయోగ్యతను మరియు విశ్వసనీయతను కూడా పెంచుతుంది.

Next.js లోడింగ్ UI: ప్రధాన భావనలు మరియు పరిణామం

లోడింగ్ స్టేట్‌లను నిర్వహించే విధానంలో Next.js గణనీయంగా అభివృద్ధి చెందింది. ప్రారంభ వెర్షన్‌లు ఎక్కువ మాన్యువల్ అమలులపై ఆధారపడ్డాయి, తరచుగా స్టేట్ మేనేజ్‌మెంట్ మరియు కండిషనల్ రెండరింగ్‌ను ఉపయోగించాయి. అయితే, యాప్ రౌటర్ ప్రవేశంతో, Next.js లోడింగ్ స్టేట్‌లను సృష్టించడానికి అంతర్నిర్మిత సంప్రదాయాలతో ప్రక్రియను సులభతరం చేసింది.

యాప్ రౌటర్ మరియు loading.js సంప్రదాయం

Next.js 13లో ప్రవేశపెట్టబడిన యాప్ రౌటర్, ఫైల్-సిస్టమ్-ఆధారిత రూటింగ్ నమూనాను అందిస్తుంది, ఇది లోడింగ్ UIల సృష్టిని సులభతరం చేస్తుంది. ఈ సంప్రదాయం యొక్క ప్రధాన అంశం loading.js ఫైల్. మీరు ఒక రూట్ సెగ్మెంట్‌లో loading.js ఫైల్‌ను ఉంచినప్పుడు, సంబంధిత రూట్ లోడ్ అవుతున్నప్పుడు Next.js ఆ ఫైల్‌లో నిర్వచించిన UIని స్వయంచాలకంగా రెండర్ చేస్తుంది.

ఇది ఎలా పనిచేస్తుందంటే:

loading.js సంప్రదాయం యొక్క ప్రయోజనాలు:

ప్రపంచ ప్రేక్షకుల కోసం సమర్థవంతమైన లోడింగ్ UIలను రూపొందించడం

ప్రపంచ ప్రేక్షకులతో ప్రతిధ్వనించే లోడింగ్ UIలను సృష్టించడానికి ఆలోచనాత్మకమైన డిజైన్ మరియు విభిన్న వినియోగదారు సందర్భాల పరిగణన అవసరం. ఒక ప్రాంతం లేదా జనాభాకు పనిచేసేది విశ్వవ్యాప్తంగా అర్థం చేసుకోబడకపోవచ్చు లేదా ప్రశంసించబడకపోవచ్చు.

1. స్పష్టత మరియు సార్వత్రికత

లోడింగ్ సూచికలు విశ్వవ్యాప్తంగా అర్థమయ్యేలా ఉండాలి. సాధారణ నమూనాలలో ఇవి ఉన్నాయి:

అంతర్జాతీయ పరిగణన: పాత పరికరాలు లేదా నెమ్మదిగా ఉండే ఇంటర్నెట్ కనెక్షన్‌లపై భారం మోపే అత్యంత సంక్లిష్టమైన యానిమేషన్‌లను నివారించండి. వాటిని సరళంగా, శుభ్రంగా మరియు స్టాటిక్ కంటెంట్ నుండి దృశ్యమానంగా భిన్నంగా ఉంచండి.

2. గ్రహించిన పనితీరు వర్సెస్ వాస్తవ పనితీరు

లోడింగ్ UI వాస్తవ లోడింగ్ వేగం గురించి ఎంతగానో, వినియోగదారు గ్రహణశక్తిని నిర్వహించడం గురించి కూడా అంతే. బ్యాకెండ్ వేగంగా ఉన్నప్పటికీ, దృశ్య ఫీడ్‌బ్యాక్ లేకపోవడం వల్ల అప్లికేషన్ నెమ్మదిగా అనిపించవచ్చు.

ఆచరణాత్మక అంతర్దృష్టి: చాలా వేగవంతమైన నావిగేషన్‌ల కోసం కూడా లోడింగ్ స్టేట్‌లను అమలు చేయండి. ఇది ఏదో జరుగుతోందనే ఆలోచనను బలపరుస్తుంది మరియు వినియోగదారు విశ్వాసాన్ని పెంచుతుంది.

3. యాక్సెసిబిలిటీ (A11y)

లోడింగ్ UIలు వికలాంగులతో సహా అందరు వినియోగదారులకు అందుబాటులో ఉండాలి.

అంతర్జాతీయ పరిగణన: యాక్సెసిబిలిటీ ప్రమాణాలు ప్రపంచవ్యాప్తంగా ఉంటాయి. WCAG మార్గదర్శకాలకు కట్టుబడి ఉండటం వల్ల మీ లోడింగ్ UI సాధ్యమైనంత విస్తృత ప్రేక్షకులకు ఉపయోగపడేలా ఉంటుంది.

4. సాంస్కృతిక సున్నితత్వం

లోడింగ్ సూచికలు సాధారణంగా సార్వత్రికమైనప్పటికీ, సంభావ్య సాంస్కృతిక వ్యాఖ్యానాల గురించి జాగ్రత్తగా ఉండటం మంచిది, ముఖ్యంగా మరింత నైరూప్య దృశ్య అంశాలతో.

ఉదాహరణ: తిరిగే ఐకాన్ సాధారణంగా సురక్షితమైనది. అయితే, మీరు మరింత క్లిష్టమైన యానిమేషన్‌లు లేదా చిత్రాలను ఉపయోగిస్తుంటే, అది అనుకోని ప్రతికూల అర్థాలను కలిగి ఉండే ప్రాంతాలు ఏవైనా ఉన్నాయో లేదో పరిగణించండి.

loading.js ఫైల్‌తో లోడింగ్ UIని అమలు చేయడం

Next.jsలో loading.js ఫైల్‌ను ఉపయోగించి లోడింగ్ స్టేట్‌లను సృష్టించే ఆచరణాత్మక ఉదాహరణలను అన్వేషిద్దాం.

ఉదాహరణ 1: సాధారణ స్పిన్నర్ లోడింగ్ స్టేట్

మీ రూట్ సెగ్మెంట్‌లో (ఉదా., app/dashboard/loading.js) loading.js అనే ఫైల్‌ను సృష్టించండి.

// app/dashboard/loading.js

export default function DashboardLoading() {
  // మీరు లోడింగ్‌లో ఏ UI నైనా చేర్చవచ్చు, అనుకూల కాంపోనెంట్‌తో సహా
  return (
    

డాష్‌బోర్డ్ కంటెంట్ లోడ్ అవుతోంది...

); }

ఆ తర్వాత మీరు స్పిన్నర్ కోసం CSSని నిర్వచించాలి, బహుశా గ్లోబల్ స్టైల్‌షీట్‌లో లేదా CSS మాడ్యూల్‌లో.


/* స్పిన్నర్ కోసం ఉదాహరణ CSS */
.spinner {
  border: 4px solid rgba(0, 0, 0, 0.1);
  border-left-color: #09f;
  border-radius: 50%;
  width: 50px;
  height: 50px;
  animation: spin 1s linear infinite;
}

@keyframes spin {
  to {
    transform: rotate(360deg);
  }
}

గ్లోబల్ అప్లికేషన్: ఈ సాధారణ స్పిన్నర్ సార్వత్రికంగా అర్థం చేసుకోబడింది మరియు విభిన్న సాంస్కృతిక నేపథ్యాలలో ప్రభావవంతంగా ఉంటుంది.

ఉదాహరణ 2: బ్లాగ్ పోస్ట్‌ల కోసం స్కెలెటన్ స్క్రీన్

ప్రతి పోస్ట్ దాని పూర్తి కంటెంట్‌ను (ఉదా., చిత్రాలు, రచయిత వివరాలు) లోడ్ చేయడానికి కొంత సమయం తీసుకునే బ్లాగ్ ఇండెక్స్ పేజీని ఊహించుకోండి.

app/blog/loading.jsను సృష్టించండి:

// app/blog/loading.js

export default function BlogListLoading() {
  return (
    
); }

మరియు దానికి సంబంధించిన CSS:


.skeleton-item {
  background-color: #eee;
  border-radius: 8px;
  animation: pulse 1.5s infinite;
}

@keyframes pulse {
  0% { background-color: #f0f0f0; }
  50% { background-color: #e0e0e0; }
  100% { background-color: #f0f0f0; }
}

అసలైన బ్లాగ్ పోస్ట్‌లు లోడ్ అయినప్పుడు, అవి ఈ స్కెలెటన్ ఐటెమ్‌లను భర్తీ చేస్తాయి.

అంతర్జాతీయ పరిగణన: కంటెంట్ లేఅవుట్‌కు సంబంధించి వినియోగదారు అంచనాలను నిర్వహించడానికి స్కెలెటన్ స్క్రీన్‌లు అద్భుతమైనవి. నెమ్మదిగా ఉండే ఇంటర్నెట్ వేగం ఉన్న ప్రాంతాలలో ఇవి ప్రత్యేకంగా ఉపయోగపడతాయి, ఎందుకంటే అవి సాధారణ స్పిన్నర్ కంటే మరింత వాస్తవికంగా అనిపించే విజువల్ ప్లేస్‌హోల్డర్‌ను అందిస్తాయి.

ఉదాహరణ 3: నెస్ట్ చేయబడిన లోడింగ్ స్టేట్‌లు

బహుళ విభాగాలతో కూడిన డాష్‌బోర్డ్‌ను పరిగణించండి. ప్రధాన డాష్‌బోర్డ్‌లో సాధారణ లోడింగ్ సూచిక ఉండవచ్చు, అయితే డాష్‌బోర్డ్‌లోని ఒక నిర్దిష్ట చార్ట్‌కు దాని స్వంత సూక్ష్మ-స్థాయి లోడింగ్ స్టేట్ ఉండవచ్చు.

నిర్మాణం:

/dashboard/analyticsకు నావిగేట్ చేస్తున్నప్పుడు:

  1. app/dashboard/loading.js నుండి లోడింగ్ స్టేట్ మొదట కనిపించవచ్చు.
  2. విశ్లేషణల విభాగం లోడ్ అవ్వడం ప్రారంభించినప్పుడు, app/dashboard/analytics/loading.js నుండి లోడింగ్ స్టేట్ ఆ నిర్దిష్ట విభాగానికి బాధ్యత తీసుకుంటుంది.

ఈ ప్రగతిశీల లోడింగ్ పేజీలోని కొన్ని భాగాలు ఇంకా డేటాను ఫెచ్ చేస్తున్నప్పటికీ, వినియోగదారులు కంటెంట్‌ను వీలైనంత త్వరగా చూసేలా చేస్తుంది.

గ్లోబల్ అప్లికేషన్: అస్థిరమైన నెట్‌వర్క్ కనెక్టివిటీ ఉన్న ప్రాంతాలలోని వినియోగదారులకు నెస్ట్ చేయబడిన లోడింగ్ స్టేట్‌లు ప్రత్యేకంగా ప్రయోజనకరంగా ఉంటాయి. అవి నిరంతర ఫీడ్‌బ్యాక్‌ను అందిస్తాయి, అప్లికేషన్ ఇంకా పూర్తి కంటెంట్‌ను ప్రదర్శించడానికి పనిచేస్తోందని వినియోగదారులకు భరోసా ఇస్తాయి.

అధునాతన లోడింగ్ UI నమూనాలు మరియు అంతర్జాతీయీకరణ

ప్రాథమిక loading.jsకు మించి, మీరు మరింత అధునాతన లోడింగ్ నమూనాలను అమలు చేయవచ్చు మరియు వాటిని అంతర్జాతీయీకరణ కోసం అనుకూలీకరించవచ్చు.

1. డైనమిక్ లేబుల్స్‌తో ప్రోగ్రెస్ బార్‌లు

సుదీర్ఘ కార్యకలాపాల కోసం, ఒక ప్రోగ్రెస్ బార్ మరింత వివరమైన ఫీడ్‌బ్యాక్‌ను అందిస్తుంది. మీరు ప్రోగ్రెస్ బార్‌తో పాటు వచ్చే టెక్స్ట్‌ను డైనమిక్‌గా నవీకరించవచ్చు.

అంతర్జాతీయీకరణ అంశం: మీ అప్లికేషన్ బహుళ భాషలకు మద్దతు ఇస్తే, ప్రోగ్రెస్ బార్‌తో పాటు వచ్చే టెక్స్ట్ (ఉదా., "ఫైల్ అప్‌లోడ్ అవుతోంది...", "డేటా ప్రాసెస్ చేయబడుతోంది...") కూడా అంతర్జాతీయీకరించబడిందని నిర్ధారించుకోండి. వినియోగదారు యొక్క లోకేల్ ఆధారంగా తగిన అనువాదాన్ని పొందడానికి మీ i18n లైబ్రరీని ఉపయోగించండి.


// ప్రోగ్రెస్ స్టేట్‌ను నిర్వహించే పేజీ కాంపోనెంట్‌లో ఉదాహరణ
import { useState } from 'react';
import { useTranslations } from 'next-intl'; // i18n కోసం next-intl అని భావించి

function UploadComponent() {
  const t = useTranslations('Upload');
  const [progress, setProgress] = useState(0);

  // ... ప్రోగ్రెస్‌ను నవీకరించే అప్‌లోడ్ లాజిక్

  return (
    

{t('uploadingFileMessage', { progress }) dasdasd %})

); }

2. షరతులతో కూడిన లోడింగ్ స్టేట్‌లు

మీరు ఫెచ్ చేయబడుతున్న డేటా రకం లేదా వినియోగదారు సందర్భం ఆధారంగా విభిన్న లోడింగ్ స్టేట్‌లను ప్రదర్శించాలనుకోవచ్చు.

అంతర్జాతీయ పరిగణన: పరిమిత బ్యాండ్‌విడ్త్ ఉన్న ప్రాంతాలలోని వినియోగదారుల కోసం, మీరు రిచ్ యానిమేషన్‌లతో పోలిస్తే తేలికైన లోడింగ్ సూచికలు లేదా స్కెలెటన్ స్క్రీన్‌లను ఎంచుకోవచ్చు. దీనిని వినియోగదారు ప్రాధాన్యతలు, జియో-లొకేషన్ (అనుమతితో), లేదా నెట్‌వర్క్ వేగం గుర్తింపు ద్వారా నిర్ణయించవచ్చు.

3. టైమ్‌అవుట్ హ్యాండ్లింగ్

ఒక రూట్ లోడ్ అవ్వడానికి చాలా సమయం పడితే ఏమి జరుగుతుంది? టైమ్‌అవుట్‌లను అమలు చేయడం చాలా ముఖ్యం.

ఉదాహరణ: డేటా ఫెచింగ్ ఒక నిర్దిష్ట పరిమితిని (ఉదా., 10 సెకన్లు) దాటితే, మీరు మరింత ప్రముఖమైన లోడింగ్ సందేశానికి లేదా ఎర్రర్ స్టేట్‌కు మారవచ్చు, వినియోగదారు మళ్లీ ప్రయత్నించమని లేదా వారి కనెక్షన్‌ను తనిఖీ చేయమని సూచించవచ్చు.

గ్లోబల్ అప్లికేషన్: అస్థిరమైన లేదా నెమ్మదిగా ఉండే ఇంటర్నెట్ కనెక్షన్‌లు ఉన్న ప్రాంతాలలోని వినియోగదారులకు ఇది చాలా అవసరం. ఒక మర్యాదపూర్వకమైన టైమ్‌అవుట్ సందేశం వినియోగదారులు ఇరుక్కుపోయినట్లు లేదా నిరాశకు గురికాకుండా నిరోధించగలదు.

4. బ్యాక్‌గ్రౌండ్ లోడింగ్ మరియు నోటిఫికేషన్‌లు

కొన్ని కార్యకలాపాల కోసం (ఉదా., ఒక నివేదికను డౌన్‌లోడ్ చేయడం), పని నేపథ్యంలో పురోగమిస్తున్నప్పుడు వినియోగదారు అప్లికేషన్‌తో సంభాషించడం కొనసాగించడానికి మీరు అనుమతించాలనుకోవచ్చు. ఒక సూక్ష్మమైన నోటిఫికేషన్ లేదా టోస్ట్ సందేశం కొనసాగుతున్న కార్యాచరణను సూచించగలదు.

అంతర్జాతీయీకరణ అంశం: ఈ నోటిఫికేషన్ సందేశాలు కూడా స్థానికీకరించబడ్డాయని మరియు సాంస్కృతికంగా సముచితంగా ఉన్నాయని నిర్ధారించుకోండి.

ఫెచింగ్ లైబ్రరీలు మరియు ఫ్రేమ్‌వర్క్‌లతో ఏకీకరణ

Next.js యొక్క డేటా ఫెచింగ్ పద్ధతులు (fetch, సర్వర్ కాంపోనెంట్‌లు, క్లయింట్ కాంపోనెంట్‌లు) మీ లోడింగ్ UI వ్యూహంతో ఏకీకృతం చేయబడతాయి.

డేటా ఫెచింగ్‌తో సస్పెన్స్ ఉపయోగించి ఉదాహరణ:


// app/posts/[id]/page.js

async function getData(id) {
  const res = await fetch(`https://api.example.com/posts/${id}`);
  if (!res.ok) {
    throw new Error('Failed to fetch data');
  }
  return res.json();
}

// పేజీ కాంపోనెంట్ స్వయంచాలకంగా సస్పెన్స్‌తో చుట్టబడుతుంది
// మరియు సమీపంలోని loading.js రెండర్ చేయబడుతుంది.
export default async function PostPage({ params }) {
  const post = await getData(params.id);

  return (
    

{post.title}

{post.body}

); }

ఈ సందర్భంలో, getData సమయం తీసుకుంటే, డేటా ఫెచ్ చేయబడి, పేజీ రెండర్ చేయబడే వరకు Next.js సమీపంలోని loading.js ఫైల్‌ను స్వయంచాలకంగా రెండర్ చేస్తుంది.

మీ లోడింగ్ UIలను ప్రపంచవ్యాప్తంగా పరీక్షించడం

మీ లోడింగ్ UIలు ప్రపంచ ప్రేక్షకుల కోసం ప్రభావవంతంగా ఉన్నాయని నిర్ధారించుకోవడానికి, కఠినమైన పరీక్ష అవసరం.

ఆచరణాత్మక అంతర్దృష్టి: నెమ్మదిగా ఉండే ఇంటర్నెట్ మౌలిక సదుపాయాలకు ప్రసిద్ధి చెందిన ప్రాంతాల నుండి వచ్చిన మెట్రిక్‌లపై ప్రత్యేక శ్రద్ధ చూపుతూ, వినియోగదారు ఫీడ్‌బ్యాక్ మరియు విశ్లేషణలను క్రమం తప్పకుండా సమీక్షించండి. ఈ డేటా పునరావృత మెరుగుదలలకు అమూల్యమైనది.

నివారించాల్సిన సాధారణ ఆపదలు

లోడింగ్ UIలను అమలు చేస్తున్నప్పుడు, అనేక సాధారణ తప్పులు వినియోగదారు అనుభవాన్ని దెబ్బతీయగలవు:

ముగింపు

అంతర్సంబంధిత డిజిటల్ ల్యాండ్‌స్కేప్‌లో, ఒక అతుకులు లేని మరియు ప్రతిస్పందించే వినియోగదారు అనుభవాన్ని అందించడం చర్చనీయాంశం కాదు. Next.js లోడింగ్ UI, ముఖ్యంగా యాప్ రౌటర్ మరియు loading.js సంప్రదాయం రాకతో, దీనిని సాధించడానికి శక్తివంతమైన సాధనాలను అందిస్తుంది. ప్రధాన సూత్రాలను అర్థం చేసుకోవడం, ప్రపంచ ప్రేక్షకులను దృష్టిలో ఉంచుకుని డిజైన్ చేయడం, ఆలోచనాత్మక నమూనాలను అమలు చేయడం మరియు కఠినంగా పరీక్షించడం ద్వారా, మీ Next.js అప్లికేషన్‌లు ప్రపంచవ్యాప్తంగా స్పష్టమైన, స్థిరమైన మరియు ప్రభావవంతమైన రూట్ ట్రాన్సిషన్ ఫీడ్‌బ్యాక్‌ను అందిస్తాయని మీరు నిర్ధారించుకోవచ్చు. ఇది వినియోగదారు సంతృప్తిని పెంచడమే కాకుండా మీ డిజిటల్ ఉత్పత్తుల యొక్క వృత్తి నైపుణ్యం మరియు విశ్వసనీయతను బలపరుస్తుంది.

ఈ పద్ధతులను స్వీకరించడం మీ అప్లికేషన్‌లను వేరుగా నిలుపుతుంది, ప్రతి వినియోగదారుకు వారి స్థానం లేదా నెట్‌వర్క్ పరిస్థితులతో సంబంధం లేకుండా ఒక ఉన్నతమైన అనుభవాన్ని అందిస్తుంది.