2021లో, జావాస్క్రిప్ట్ అత్యంత విస్తృతంగా ఉపయోగించే ప్రోగ్రామింగ్ భాష.
జావాస్క్రిప్ట్ ప్రోగ్రామింగ్ను ప్రారంభించే అనేక ఫ్రేమ్వర్క్ల ద్వారా చూసినట్లుగా, ఈ సాంకేతికత యొక్క ఆకర్షణ కాదనలేనిది.
ఫ్రంటెండ్లో కోణీయ, రియాక్ట్ మరియు వ్యూ ఉన్నాయి, అలాగే బ్యాకెండ్లో కొన్నింటిని పేర్కొనడానికి ఎక్స్ప్రెస్ మరియు నెక్స్ట్ ఉన్నాయి.
జావాస్క్రిప్ట్లో బ్యాకెండ్ ప్రోగ్రామింగ్ కోసం చాలా అద్భుతమైన ఫ్రేమ్వర్క్లు అందుబాటులో ఉన్నందున, నేను ఎక్స్ప్రెస్ లేదా నెక్స్ట్ని ఉపయోగించడం కంటే వేరే వాటి కోసం ఎందుకు శోధిస్తానని మీరు ఆలోచిస్తూ ఉండవచ్చు.
బహుశా మీరు మంచి బాయిలర్ప్లేట్తో అభివృద్ధి ప్రక్రియను త్వరగా ప్రారంభించవలసి ఉంటుంది మరియు కొత్త కంట్రోలర్లను మాత్రమే కాకుండా సేవలను కూడా మాన్యువల్గా జోడించడం వలన మీరు అనారోగ్యానికి గురవుతారు.
లేదా మీరు నిర్వహించడానికి సులభమైన పెద్ద, స్కేలబుల్ సాఫ్ట్వేర్ను సృష్టించాలనుకుంటున్నారు. లేదా బహుశా మీరు మరింత సమర్థవంతంగా మరియు అనుకూలమైన పద్ధతిలో పని చేయాలనుకుంటున్నారు.
మీ పరిస్థితిలో ఏది నిజం అయినప్పటికీ, Nest.js మీ అవసరాలకు సరైన పరిష్కారంగా ఉంటుంది.
ఈ పోస్ట్ NestJS అంతర్దృష్టులను అలాగే ప్రయోగాత్మక అనుభవాన్ని అందిస్తుంది.
NestJS అంటే ఏమిటి?
నెస్ట్ జెఎస్ ఓపెన్ సోర్స్, ఎక్స్పాండబుల్ మరియు అడాప్టబుల్ అయిన ప్రోగ్రెసివ్ నోడ్ ఫ్రేమ్వర్క్ .Js బ్యాకెండ్ సిస్టమ్లను నిర్మించడం, ఆకర్షించడం మరియు సవాలు చేయడం కోసం ఫ్రేమ్వర్క్. ఇది ఇప్పుడు వేగవంతమైన వృద్ధి రేటుతో నోడ్.
js కోసం టైప్స్క్రిప్ట్ ఫ్రేమ్వర్క్. NestJS స్కేలబుల్, పరీక్షించదగిన మరియు వదులుగా కనెక్ట్ చేయబడిన అప్లికేషన్లను రూపొందించడానికి ఉపయోగించబడుతుంది.
ఇది నోడ్కు స్కేలబిలిటీని జోడిస్తుంది. Js సర్వర్లు సరికొత్త స్థాయికి తీసుకెళ్లబడ్డాయి. మద్దతు ఉన్న డేటాబేస్లలో PostgreSQL, MongoDB మరియు MySQL ఉన్నాయి.
NestJS విస్తరించదగినది ఎందుకంటే దీనిని ఇతర లైబ్రరీలతో ఉపయోగించవచ్చు; అనువైన పూర్తి స్థాయి పర్యావరణ వ్యవస్థ కారణంగా అనువైనది. మరియు ఇది జావాస్క్రిప్ట్ ఫీచర్లు మరియు డిజైన్ సూత్రాలకు మద్దతిస్తుంది కాబట్టి ప్రగతిశీలమైనది.
ఇది ప్రధానంగా కోణీయ, ప్రతిచర్య మరియు Vue ద్వారా ప్రభావితమవుతుంది మరియు అంతర్నిర్మిత డిపెండెన్సీ ఇంజెక్షన్తో వస్తుంది.
లక్షణాలు
- దీన్ని ఉపయోగించడం, నేర్చుకోవడం మరియు నైపుణ్యం పొందడం చాలా సులభం.
- ఇది ఉచితం మరియు ఓపెన్ సోర్స్ (MIT లైసెన్స్)
- పెరిగిన ఉత్పాదకత మరియు అభివృద్ధి సరళత కోసం శక్తివంతమైన కమాండ్ లైన్ ఇంటర్ఫేస్ (CLI).
- ఉపయోగించడానికి సులభమైన యూనిట్-టెస్టింగ్ ప్రోగ్రామ్లు
- టైప్స్క్రిప్ట్, జావాస్క్రిప్ట్ యొక్క సూపర్సెట్ అయిన గట్టిగా టైప్ చేయబడిన భాష ఉపయోగించబడుతుంది.
- క్రియాశీల కోడ్బేస్ అభివృద్ధి మరియు నిర్వహణ.
- TypeORM, Mongoose, GraphQL, లాగింగ్, ధ్రువీకరణ, కాషింగ్, వెబ్సాకెట్లు మరియు మరిన్ని వంటి ప్రసిద్ధ సాంకేతికతలు మరియు ఆలోచనలతో ఇంటర్ఫేస్ చేయడాన్ని సులభతరం చేసే వందల కొద్దీ గూడు-నిర్దిష్ట మాడ్యూల్లకు మద్దతు.
NestJS యొక్క బిల్డింగ్ బ్లాక్లు ఏమిటి?
Nest అప్లికేషన్ల నిర్మాణ భాగాలు క్రింద ఇవ్వబడ్డాయి; ఇతరులు ఉన్నారు, కానీ ఈ మూడు చాలా ముఖ్యమైనవి. వాటిని త్వరగా పరిశీలిద్దాం.
1. కంట్రోలర్లు
కంట్రోలర్లు ఇన్కమింగ్ అభ్యర్థనలను ప్రాసెస్ చేయడం మరియు క్లయింట్లకు ప్రతిస్పందించడం బాధ్యత వహిస్తారు. ఇది నిర్దిష్ట HTTP అభ్యర్థనలను స్వీకరిస్తుంది మరియు ఏ అభ్యర్థనను ఏ కంట్రోలర్ పొందుతుందో రూటింగ్ సిస్టమ్ నిర్ణయిస్తుంది.
అది పంపడానికి తగిన సమాధానాన్ని రూపొందించింది. తరగతులు మరియు డెకరేటర్ల సహాయంతో, ఒక సాధారణ కలెక్టర్ నిర్మించబడింది మరియు ప్రతి కంట్రోలర్ వివిధ పనులను చేయడానికి దాని స్వంత మార్గాలను కలిగి ఉంటుంది.
2. ప్రొవైడర్లు
Nestలో ప్రొవైడర్లు కీలకమైన ఆలోచన. అనేక కోర్ Nest తరగతులు - సేవలు, రిపోజిటరీలు, ఫ్యాక్టరీలు, సహాయకులు మరియు మొదలైనవి - ప్రొవైడర్లుగా నిర్వహించబడతాయి.
ప్రొవైడర్ యొక్క ప్రాథమిక భావన ఏమిటంటే అది డిపెండెన్సీగా ఇంజెక్ట్ చేయబడవచ్చు; వస్తువులు ఒకదానితో ఒకటి వివిధ అనుబంధాలను ఏర్పరచుకోగలవని మరియు వస్తువుల యొక్క "వైరింగ్ అప్" యొక్క పాత్రను ప్రధానంగా Nest రన్టైమ్ సిస్టమ్కు అవుట్సోర్స్ చేయవచ్చని ఇది సూచిస్తుంది.
3. గుణకాలు
మాడ్యూల్ అనేది అప్లికేషన్ యొక్క నిర్మాణం యొక్క భాగాలను నిర్వహించే @Module() డెకరేటర్తో కూడిన తరగతి. ప్రతి అప్లికేషన్ రూట్ మాడ్యూల్ను కలిగి ఉంటుంది, ఇది అప్లికేషన్ గ్రాఫ్ను రూపొందించడానికి ఉపయోగించబడుతుంది, ఇది ప్రొవైడర్ మరియు మాడ్యూల్ మధ్య డిపెండెన్సీలు మరియు పరస్పర చర్యలను మరింతగా పరిష్కరిస్తుంది.
అప్లికేషన్ కోడ్లో ఏ భాగాలు, కంట్రోలర్లు లేదా ఇతర వనరులు ఉపయోగించబడతాయో గుర్తించడానికి మరియు వాటిని ఒకే సెట్లో కలపడానికి ఈ డెకరేటర్ Nest.jsకి మెటాడేటాను అందిస్తుంది.
ప్రతి మాడ్యూల్ ఏదో ఒక విధంగా కనెక్ట్ చేయబడిన సామర్థ్యాల సేకరణను కలిగి ఉంటుంది.
NestJSతో ప్రారంభించడం
1. సంస్థాపన
ఈ దశలను అనుసరించడం ద్వారా NestJSని ఇన్స్టాల్ చేసి, దానితో ప్రాజెక్ట్ని చేద్దాం:
దీని ఫలితంగా కింది డైరెక్టరీ నిర్మాణం సృష్టించబడుతుంది:
2. కంట్రోలర్లు
నెస్ట్ బిల్డింగ్ బ్లాక్లు కంట్రోలర్లు. ఇన్బౌండ్ అభ్యర్థనలు నిర్వహించబడే స్థానాలు ఇవి. దిగువ కోడ్లో చూసినట్లుగా, మీరు HTTP మెథడ్ మాడిఫైయర్లను (గెట్, పోస్ట్, పుట్, డిలీట్ మరియు మొదలైనవి) డెకరేటర్లను ఉపయోగించి రూట్ పాత్ను పేర్కొనవచ్చు.
Nestjs డెకరేటర్ విధానాన్ని ఉపయోగిస్తుంది మరియు ఎక్కువగా టైప్స్క్రిప్ట్లో అభివృద్ధి చేయబడింది, అయినప్పటికీ ఇది జావాస్క్రిప్ట్కు కూడా మద్దతు ఇస్తుంది. అభ్యర్థన బాడీని ధృవీకరించడానికి మీరు క్లాస్ వాలిడేటర్ని కూడా ఉపయోగించవచ్చు.
నేను Nestjs సర్వర్ ఉదాహరణను తయారు చేయబోతున్నాను మరియు ప్రపంచవ్యాప్తంగా ValidationPipeని జోడించబోతున్నాను. పైపులు కంట్రోలర్ల ముందు అమలు చేసే పద్ధతులు మాత్రమే. @UsePipes డెకరేటర్ని ఉపయోగించి పైప్లను పద్ధతి/వాదన స్థాయిలో కూడా అన్వయించవచ్చు.
3. ప్రొవైడర్లు
ప్రొవైడర్లు Nestjs యొక్క మరొక కీలకమైన భాగం. ఇప్పటివరకు, నేను డేటాను తాత్కాలిక వేరియబుల్లో నిల్వ చేస్తున్నాను. అందుకే కంట్రోలర్ హ్యాండ్లర్లను ఉపయోగించి అటువంటి సాధారణ పనిని సాధించవచ్చు.
అయినప్పటికీ, పెద్ద, మరింత సంక్లిష్టమైన తర్కం కోసం, కోడ్ విభజన మరియు పునర్వినియోగం కష్టం. సరఫరాదారులు వచ్చినప్పుడు ఇది జరుగుతుంది. మీరు @ఇంజెక్టబుల్ డెకరేటర్ని ఉపయోగించడం ద్వారా క్లాస్ పైన ప్రొవైడర్ని ప్రకటించవచ్చు/సృష్టించవచ్చు. అప్పుడు, ప్రొవైడర్లను ఉపయోగించి, మీరు డిపెండెన్సీ ఇంజెక్షన్, లాగింగ్ మరియు ఇతర పనులను చేయవచ్చు.
4. గుణకాలు
Nestjs మాడ్యూల్స్ గ్లోబల్ కాదు; బదులుగా, అవి లోతు కలిగి ఉంటాయి.
అయితే, ఇది ఏదైనా ఇతర మాడ్యూల్స్తో కూడా భాగస్వామ్యం చేయబడుతుంది. ఇది యాంగ్యులర్ లాగా గ్లోబల్ మాడ్యూల్లను అందిస్తున్నప్పటికీ, Nestjలలో సర్వసాధారణంగా ఉపయోగించే మాడ్యూల్లో సేవలు/కంట్రోలర్లను ఉంచడం మరింత మంచిది.
ఎక్కువ సమయం మాడ్యూల్లను ఉత్పత్తి చేయడానికి NestCLI ఉపయోగించబడుతుంది మరియు ఆ మాడ్యూల్ సందర్భంలో ఉత్పత్తి చేయబడిన ప్రొవైడర్లు/కంట్రోలర్లు CLI ద్వారా స్వయంచాలకంగా జోడించబడతాయి. వీటిని ఫీచర్ మాడ్యూల్స్ అంటారు.
5. మినహాయింపు ఫిల్టర్లు
మినహాయింపు ఫిల్టర్లు అనేవి ఒక కంట్రోలర్ మినహాయింపును ఇచ్చినప్పుడు అమలు చేయబడే ఎర్రర్ హ్యాండ్లర్లు. ఇది సమస్యను స్వయంచాలకంగా నిర్వహిస్తుంది మరియు తగిన, వినియోగదారు-స్నేహపూర్వక దోష సందేశాన్ని అందిస్తుంది.
NotFoundException, BadRequestException, NotAcceptableException, UnauthorizedException మరియు అనేక ఇతరాలతో సహా @nestjs/common ప్యాకేజీ ద్వారా అనేక HttpException వారసత్వ మినహాయింపులు అందించబడ్డాయి. మీరు మీ స్వంత మినహాయింపు ఫిల్టర్ని కూడా రూపొందించవచ్చు.
6. మిడిల్వేర్
రూట్ హ్యాండ్లర్కు ముందు అమలు చేయబడిన ఫంక్షన్ను మిడిల్వేర్ అంటారు. అభ్యర్థన మరియు ప్రతిస్పందన వస్తువులు, అలాగే అప్లికేషన్ యొక్క అభ్యర్థన-ప్రతిస్పందన చక్రంలో తదుపరి() మిడిల్వేర్ ఫంక్షన్, మిడిల్వేర్ ఫంక్షన్లకు అందుబాటులో ఉంటాయి.
తదుపరి అని పిలువబడే వేరియబుల్ సాధారణంగా తదుపరి మిడిల్వేర్ ఫంక్షన్ను గుర్తించడానికి ఉపయోగించబడుతుంది. అనుకూల Nest మిడిల్వేర్ను @Injectable() డెకరేటర్ని ఉపయోగించి ఒక పద్ధతిలో లేదా తరగతిలో అమలు చేయవచ్చు.
7. గార్డ్స్
గార్డులు ఒక విషయానికి మాత్రమే బాధ్యత వహిస్తారు. నిర్దిష్ట పరిస్థితుల (ప్రత్యేకంగా, వినియోగదారు నిర్వచించిన తర్కం) ఆధారంగా కంట్రోలర్ ద్వారా అభ్యర్థన ప్రాసెస్ చేయబడుతుందో లేదో అంచనా వేయడం వారి బాధ్యత.
ఇది ప్రమాణీకరణ/ప్రామాణీకరణకు సహాయకరంగా ఉంటుంది మరియు Nestjsలో సిఫార్సు చేయబడిన పద్ధతి.
ప్రామాణీకరణ/అనుమతులు మొదలైనవి మిడిల్వేర్ని ఉపయోగించి చేయవచ్చు, ఇది ఎక్స్ప్రెస్ లేదా ఇతర HTTP సర్వర్లలో జరగదు ఎందుకంటే వాటికి సంబంధిత బలమైన సందర్భం లేదు మరియు అభ్యర్థనను ప్రాసెస్ చేయడానికి ఏ పద్ధతిని ఉపయోగించబడుతుందో తెలుసుకోవడానికి ఎటువంటి కారణం లేదు.
ప్రయోజనాలు
- ఫ్రేమ్వర్క్ ఉల్లేఖనాలపై ఎక్కువగా ఆధారపడుతుంది, ఇవి ఎండ్ పాయింట్ల నుండి స్వాగర్ డాక్యుమెంటేషన్ వరకు ఏదైనా ఉత్పత్తి చేయడానికి ఉపయోగించబడుతుంది. ముగింపు బిందువులు ప్రాథమికంగా మరియు చక్కగా ఉంటాయి మరియు ఉల్లేఖనాలు సాధారణంగా అభివృద్ధిని సులభతరం చేస్తాయి.
- Nest.js అనేది మాడ్యూల్ ఆధారిత ఫ్రేమ్వర్క్ అయినందున అనేక ప్రాజెక్ట్లలో సాధారణ-ప్రయోజన మాడ్యూల్లను బాహ్యంగా మార్చడం మరియు కోడ్ని మళ్లీ ఉపయోగించడం చాలా సులభం.
- Nest.js' ఫోల్డర్ నిర్మాణం కోణీయ ద్వారా గణనీయంగా ప్రభావితమైంది. Nest సర్వీస్ని డిజైన్ చేస్తున్నప్పుడు, ఇది కనిష్ట సమయ వ్యవధిని అనుమతిస్తుంది.
- భాగాలు అప్లికేషన్ మాడ్యూల్ మరియు ప్రధాన ఫైల్ను కలిగి ఉన్న రూట్తో వాటి స్వంత డైరెక్టరీలను కలిగి ఉంటాయి. నిర్మాణం యొక్క సరళత కారణంగా, అప్లికేషన్ యొక్క నిర్మాణం కంటే ముగింపు పాయింట్లు మరియు వారి కస్టమర్ల రూపకల్పనపై ఎక్కువ శ్రద్ధ పెట్టవచ్చు.
- కోణీయ వంటి Nest, Nestjs/cli అనే చక్కని కమాండ్-లైన్ సాధనాన్ని అందిస్తుంది, ఇది నోడ్ ప్యాకేజీ మేనేజర్ ద్వారా అందుబాటులో ఉంటుంది.
ప్రతికూలతలు
- టైప్స్క్రిప్ట్ వినియోగం మరియు కోణీయ ఏకీకరణ పరంగా నెస్ట్కు ప్రయోజనం ఉంది, అయితే దీనికి భారీ కార్పొరేషన్ ఆర్థిక మద్దతు లేదు.
- డాక్యుమెంటేషన్ లేకపోవడం Nest వినియోగదారులకు అతిపెద్ద ముప్పును కలిగిస్తుంది. ఫ్రేమ్వర్క్ ఇతర ఫ్రేమ్వర్క్లతో అద్భుతమైన పరస్పర చర్యలను కలిగి ఉన్నప్పటికీ, డాక్యుమెంటేషన్ చాలా తక్కువగా ఉంటుంది మరియు ఎటువంటి సంభావ్య ఇబ్బందులను పరిష్కరించదు.
- టైప్స్క్రిప్ట్ వినియోగం మరియు కోణీయ పరంగా Nest ప్రయోజనాన్ని కలిగి ఉంది.
ముగింపు
NestJS డెవలపర్లకు భారీ స్థాయిని అందిస్తుంది. అభివృద్ధిని ప్రారంభించడానికి, మీరు చేయాల్సిందల్లా కొత్త యాప్ని సృష్టించండి మరియు మీరు వెళ్ళడం మంచిది. ఈ ఫ్రేమ్వర్క్ వెంటనే గణనీయమైన బూస్ట్ను అందిస్తుంది, అదే సమయంలో తగిన యాప్ ఆర్కిటెక్చర్ని ఏర్పాటు చేయడం ద్వారా అదనపు దశలను తీసుకోవడంలో మీకు సహాయం చేస్తుంది.
ఇది నిర్వహించదగిన మరియు దీర్ఘకాలం ఉండే అప్లికేషన్లను ఉత్పత్తి చేయడానికి అత్యాధునిక పద్ధతులు మరియు సాంకేతికతను ఉపయోగించుకుంటుంది. ఇది GraphQL, WebSocketsకి కనెక్ట్ చేయడానికి మరియు మైక్రోసర్వీస్లను నిర్మించడానికి ఉపయోగించవచ్చు.
సమాధానం ఇవ్వూ