Sunrabbit

Node.js जूनियर भी बना सकते हैं framework level DI

  • लेखन भाषा: कोरियाई
  • आधार देश: सभी देशcountry-flag
  • आईटी

रचना: 2024-11-08

रचना: 2024-11-08 14:02

Node.js का उपयोग करके सर्वर विकास करते समय, हमें कई बार Spring के आकर्षण का सामना करना पड़ता है।

क्योंकि यह संरचित, व्यवस्थित है और इसे आसानी से तोड़ना मुश्किल है।


इसलिए, Node.js के क्षेत्र में, Nest.js नामक एक फ्रेमवर्क का विकास हुआ है।

कम से कम Spring की तरह संरचित ढाँचे में सर्वर विकास करने की कई इच्छाएँ थीं।


लेकिन Spring का DI रनटाइम रिफ्लेक्शन का उपयोग करके भाषा स्तर पर DI करने में सहायता करता है।

Dotnet भी इसी तरह एट्रिब्यूट्स के आधार पर ट्रैकिंग करके रिफ्लेक्शन के द्वारा DI करता है।


तो Nest.js DI कैसे करता है?

Spring और Dotnet की आधार भाषा कम्पाइलर भाषाएँ हैं, इसलिए वे भाषा स्तर पर रिफ्लेक्शन का समर्थन करती हैं,

लेकिन ecma script तो केवल एक इंटरप्रेटर भाषा है, है ना?


नीचे Nest.js के ट्यूटोरियल में से एक उदाहरण दिया गया है।


निश्चित रूप से, TypeScript में लिखा गया यह कोड कम्पाइल होने पर टाइप टैग हटा देगा, और क्लास से कंस्ट्रक्टर के लिए आवश्यक आर्ग्यूमेंट टाइप नहीं पता होगा।


हल भाषा विनिर्देश में था।

Reflect

सौभाग्य से, भाषा स्तर पर प्रत्येक ऑब्जेक्ट में मेटाडेटा जोड़ने के लिए एक सुविधा बनाई गई थी।

Node.js जूनियर भी बना सकते हैं framework level DI


यह केवल ऑब्जेक्ट में मेटाडेटा जोड़ने और प्राप्त करने का एक सरल कार्य है।


इसलिए, TypeScript ने सोचा।

तो, क्लास को कम्पाइल करते समय, क्या हम टाइप जानकारी को मेटाडेटा में जोड़ सकते हैं?


इसलिए, TypeScript क्लास डेकोरेटर वाले प्रत्येक स्थान पर क्लास के कंस्ट्रक्टर के लिए आवश्यक आर्ग्यूमेंट्स की जानकारी Reflect में संग्रहीत करता है।

Node.js जूनियर भी बना सकते हैं framework level DI

यहाँ कोई ट्रांसफ़ॉर्म या ब्लैक मैजिक शामिल नहीं है, यह केवल TypeScript कम्पाइलर की एक सुविधा है।


इस प्रकार, यदि क्लास के मेटाडेटा में कंस्ट्रक्टर के लिए आवश्यक आर्ग्यूमेंट्स के प्रकार शामिल हैं,

हम क्लास को लोड करके टाइप जान सकते हैं, और उसे सीधे डाल सकते हैं।


इसके कार्यान्वयन के लिए आप NestJS देख सकते हैं, लेकिन यह बहुत लंबा है, इसलिए मैं एक अलग लाइब्रेरी सुझाऊँगा।


यह लाइब्रेरी Microsoft द्वारा बनाई गई है, इसलिए इसका कोड बहुत साफ है।

मैं इसे देखने की सलाह देता हूँ, और यहीं पर मैं यह लेख समाप्त करता हूँ।

टिप्पणियाँ0

[जावा] रिफ्लेक्शन अवधारणा और उपयोग विधिजावा रिफ्लेक्शन एक ऐसा API है जो हीप में लोड किए गए क्लास की जानकारी के माध्यम से ऑब्जेक्ट निर्माण, फील्ड और मेथड एक्सेस को सक्षम बनाता है। इसका उपयोग स्प्रिंग फ्रेमवर्क जैसे फ्रेमवर्क में ऑब्जेक्ट निर्माण और निर्भरता इंजेक्शन के लिए किया जाता है।
제이온
제이온
제이온
제이온

April 25, 2024

7 दिन में AI की मदद से एक मज़ेदार गेम बनानाAI की मदद से D&D5e पर आधारित वेब गेम के विकास का 7वाँ दिन है। बेहतर प्रदर्शन और सुविधाओं के साथ बातचीत, युद्ध प्रभाव के कार्यान्वयन में सफलता मिली है, कैनवास परतों को अलग करके और ESM विधि को बदलकर। ggoban.com/d2ng पर देखें।
꼬반
꼬반
꼬반
꼬반

November 13, 2024

ओपनसोर्स योगदान अनुभवयह लेख ओपनसोर्स योगदान अनुभव साझा करता है, डर पर काबू पाने और पहला कदम उठाने का साहस प्रदान करता है। छोटे सुधारों से शुरुआत करके आत्मविश्वास हासिल करने और बढ़ने की प्रक्रिया के बारे में बताता है।
seungwon
seungwon
seungwon
seungwon

May 3, 2025

[गैर-तकनीकी पृष्ठभूमि वाले, डेवलपर बनने का सफ़र] 17. नए डेवलपर का पोर्टफोलियो, कहाँ तक?नए डेवलपर के पोर्टफोलियो को बुनियादी CRUD फंक्शन के कार्यान्वयन और बाहरी API एकीकरण के अनुभव के इर्द-गिर्द बनाना अच्छा होता है।
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자

April 3, 2024

[स्प्रिंग] @Async का उपयोग कैसे करेंस्प्रिंग @Async का उपयोग करके जावा एसिंक्रोनस प्रोसेसिंग को आसानी से लागू करने के तरीके जानें। थ्रेड पूल सेटिंग और Future, ListenableFuture, CompletableFuture के उपयोग को शामिल किया गया है।
제이온
제이온
제이온
제이온

April 25, 2024

[इफेक्टिव जावा] आइटम 6. अनावश्यक ऑब्जेक्ट निर्माण से बचेंअनावश्यक ऑब्जेक्ट निर्माण मेमोरी की बर्बादी का कारण बनता है, इसलिए स्ट्रिंग या बूलियन जैसे ऑब्जेक्ट के लिए लिटरल या स्टेटिक फैक्ट्री मेथड का उपयोग करना बेहतर होता है।
제이온
제이온
제이온
제이온

April 28, 2024