2021 میں، JavaScript سب سے زیادہ استعمال ہونے والی پروگرامنگ زبان تھی۔
اس ٹکنالوجی کی اپیل ناقابل تردید ہے، جیسا کہ جاوا اسکرپٹ پروگرامنگ کو فعال کرنے والے فریم ورک کی ایک بڑی تعداد نے دیکھا ہے۔
فرنٹ اینڈ پر اینگولر، ری ایکٹ اور ویو ہیں، نیز بیک اینڈ پر ایکسپریس اور نیکسٹ، چند کا ذکر کرنے کے لیے۔
جاوا اسکرپٹ میں بیک اینڈ پروگرامنگ کے لیے بہت سے شاندار فریم ورک کے ساتھ قابل رسائی، آپ سوچ رہے ہوں گے کہ میں ایکسپریس یا نیکسٹ استعمال کرنے کے بجائے کچھ مختلف کیوں تلاش کروں گا۔
شاید آپ کو ایک مہذب بوائلر پلیٹ کے ساتھ تیزی سے ترقی کے عمل کو شروع کرنے کی ضرورت ہے، اور دستی طور پر نہ صرف نئے کنٹرولرز کو شامل کرنا بلکہ خدمات بھی آپ کو بیمار کر دیتی ہیں۔
یا آپ بڑا، توسیع پذیر سافٹ ویئر بنانا چاہتے ہیں جس کا نظم کرنا آسان ہو۔ یا شاید آپ صرف زیادہ موثر اور آسان طریقے سے کام کرنا چاہتے ہیں۔
اس سے قطع نظر کہ آپ کے حالات میں کیا سچ ہے، Nest.js آپ کی ضروریات کے لیے بہترین حل ہو سکتا ہے۔
یہ پوسٹ NestJS بصیرت کے ساتھ ساتھ ہینڈ آن تجربہ بھی فراہم کرے گی۔
NestJS کیا ہے؟
NestJS ایک ترقی پسند نوڈ فریم ورک ہے جو اوپن سورس، قابل توسیع اور قابل موافقت ہے۔ .جے ایس بیک اینڈ سسٹم کی تعمیر، مشغولیت اور چیلنج کرنے کا فریم ورک۔ اب یہ تیز ترین ترقی کی شرح کے ساتھ نوڈ ہے۔
js کے لیے TypeScript فریم ورک۔ NestJS کا استعمال ایسی ایپلی کیشنز بنانے کے لیے کیا جاتا ہے جو قابل توسیع، قابل جانچ، اور ڈھیلے طریقے سے جڑے ہوئے ہوں۔
یہ نوڈ میں توسیع پذیری کا اضافہ کرتا ہے۔ جے ایس سرورز کو بالکل نئی سطح پر لے جایا گیا ہے۔ PostgreSQL، MongoDB، اور MySQL تعاون یافتہ ڈیٹا بیس میں سے ہیں۔
NestJS قابل توسیع ہے کیونکہ اسے دوسری لائبریریوں کے ساتھ استعمال کیا جا سکتا ہے۔ اس کے موافقت پذیر مکمل ماحولیاتی نظام کی وجہ سے لچکدار۔ اور ترقی پسند ہے کیونکہ یہ جاوا اسکرپٹ کی خصوصیات اور ڈیزائن کے اصولوں کو سپورٹ کرتا ہے۔
یہ بنیادی طور پر Angular، React اور Vue سے متاثر ہوتا ہے اور بلٹ ان انحصار انجیکشن کے ساتھ آتا ہے۔
خصوصیات
- یہ استعمال کرنا، سیکھنا اور ماسٹر کرنا آسان ہے۔
- یہ مفت ہے اور آزاد مصدر (MIT لائسنس)
- طاقتور کمانڈ لائن انٹرفیس (CLI) پیداواری صلاحیت میں اضافہ اور ترقی کی سادگی کے لیے
- یونٹ ٹیسٹنگ پروگرام جو استعمال میں آسان ہیں۔
- TypeScript، ایک مضبوطی سے ٹائپ کی گئی زبان جو JavaScript کا ایک سپر سیٹ ہے، استعمال کیا جاتا ہے۔
- ایک فعال کوڈ بیس کی ترقی اور دیکھ بھال۔
- گھوںسلا سے متعلق سیکڑوں ماڈیولز کے لیے سپورٹ جو مقبول ٹیکنالوجیز اور آئیڈیاز جیسے TypeORM، Mongoose، GraphQL، لاگنگ، توثیق، کیشنگ، WebSockets اور مزید کے ساتھ انٹرفیس کرنا آسان بناتے ہیں۔
NestJS کے بلڈنگ بلاکس کیا ہیں؟
Nest ایپلیکیشنز کے عمارتی اجزاء ذیل میں درج ہیں۔ اور بھی ہیں، لیکن یہ تین سب سے اہم ہیں۔ آئیے جلدی سے ان پر ایک نظر ڈالیں۔
1. کنٹرولرز
کنٹرولرز آنے والی درخواستوں پر کارروائی کرنے اور گاہکوں کو جواب دینے کے انچارج ہیں۔ اسے مخصوص HTTP درخواستیں موصول ہوتی ہیں، اور روٹنگ سسٹم اس بات کا تعین کرتا ہے کہ کون سے کنٹرولر کو کون سی درخواست ملتی ہے۔
اس کے بعد بھیجنے کے لیے ایک مناسب جواب کا مسودہ تیار کرتا ہے۔ کلاسز اور ڈیکوریٹرز کی مدد سے، ایک سادہ کلکٹر بنایا گیا ہے اور ہر کنٹرولر کے پاس مختلف کام کرنے کے لیے اپنے اپنے راستوں کا سیٹ ہے۔
2. فراہم کرنے والے
Nest میں فراہم کنندگان ایک اہم خیال ہیں۔ Nest کی بہت سی بنیادی کلاسیں — سروسز، ریپوزٹریز، فیکٹریاں، مددگار، اور اسی طرح — کو فراہم کنندگان کے طور پر سنبھالا جا سکتا ہے۔
فراہم کنندہ کا بنیادی خیال یہ ہے کہ اسے انحصار کے طور پر انجیکشن لگایا جا سکتا ہے۔ اس کا مطلب یہ ہے کہ اشیاء ایک دوسرے کے ساتھ مختلف انجمنیں تشکیل دے سکتی ہیں، اور آبجیکٹ کی "وائرنگ اپ" مثالوں کا کردار بنیادی طور پر Nest رن ٹائم سسٹم میں آؤٹ سورس کیا جا سکتا ہے۔
3. ماڈیولز
ایک ماڈیول ایک کلاس ہے جس میں @Module() ڈیکوریٹر ہے جو ایپلی کیشن کے ڈھانچے کے اجزاء کو منظم کرتا ہے۔ ہر ایپلیکیشن میں ایک روٹ ماڈیول ہوتا ہے جسے ایپلیکیشن گراف بنانے کے لیے استعمال کیا جاتا ہے، جو فراہم کنندہ اور ماڈیول کے درمیان انحصار اور تعامل کو مزید حل کرتا ہے۔
یہ ڈیکوریٹر Nest.js کو میٹا ڈیٹا دیتا ہے تاکہ اس بات کی نشاندہی کی جا سکے کہ ایپلیکیشن کوڈ میں کون سے اجزاء، کنٹرولرز یا دیگر وسائل استعمال کیے جائیں گے اور انہیں ایک سیٹ میں جوڑ دیا جائے گا۔
ہر ماڈیول میں صلاحیتوں کا ایک مجموعہ ہوتا ہے جو کسی نہ کسی طریقے سے جڑے ہوتے ہیں۔
NestJS کے ساتھ شروع کرنا
1. تنصیب
آئیے NestJS انسٹال کریں اور ان مراحل پر عمل کرکے اس کے ساتھ ایک پروجیکٹ بنائیں:
اس کے نتیجے میں درج ذیل ڈائریکٹری ڈھانچہ تشکیل پائے گا۔
2. کنٹرولرز
Nest کے بلڈنگ بلاکس کنٹرولرز ہیں۔ یہ وہ مقامات ہیں جہاں ان باؤنڈ درخواستوں کو ہینڈل کیا جائے گا۔ آپ روٹ پاتھ کو HTTP میتھڈ موڈیفائرز (گیٹ، پوسٹ، پٹ، ڈیلیٹ اور اسی طرح) ڈیکوریٹرز کا استعمال کرتے ہوئے بتا سکتے ہیں، جیسا کہ نیچے کوڈ میں دیکھا گیا ہے۔
Nestjs ڈیکوریٹر اپروچ کو استعمال کرتا ہے اور زیادہ تر ٹائپ اسکرپٹ میں تیار کیا جاتا ہے، حالانکہ یہ جاوا اسکرپٹ کو بھی سپورٹ کرتا ہے۔ آپ درخواست کی باڈی کی توثیق کرنے کے لیے کلاس ویلیڈیٹر کا بھی استعمال کر سکتے ہیں۔
میں صرف ایک Nestjs سرور مثال بنانے جا رہا ہوں اور عالمی سطح پر ValidationPipe کو شامل کروں گا۔ پائپ صرف ایسے طریقے ہیں جو کنٹرولرز سے پہلے چلتے ہیں۔ پائپس کو @UsePipes ڈیکوریٹر کا استعمال کرتے ہوئے طریقہ/دلیل کی سطح پر بھی لاگو کیا جا سکتا ہے۔
3. فراہم کرنے والے
فراہم کنندگان Nestjs کا ایک اور اہم جزو ہیں۔ اب تک، میں ڈیٹا کو عارضی متغیر میں محفوظ کر رہا تھا۔ یہی وجہ ہے کہ کنٹرولر ہینڈلرز کا استعمال کرتے ہوئے اتنا آسان کام پورا کیا جا سکتا ہے۔
تاہم، بڑی، زیادہ پیچیدہ منطق کے لیے، کوڈ کو الگ کرنا اور دوبارہ استعمال کرنا مشکل ہوگا۔ یہ اس وقت ہوتا ہے جب سپلائر آتے ہیں۔ پھر، فراہم کنندگان کا استعمال کرتے ہوئے، آپ انحصار انجیکشن، لاگنگ، اور دیگر کام کر سکتے ہیں۔
4. ماڈیولز
Nestjs ماڈیول عالمی نہیں ہیں؛ اس کے بجائے، ان کی گہرائی ہے.
تاہم، اسے کسی دوسرے ماڈیول کے ساتھ بھی شیئر کیا جا سکتا ہے۔ اگرچہ یہ، انگولر کی طرح، گلوبل ماڈیولز پیش کرتا ہے، لیکن خدمات/کنٹرولرز کو اس ماڈیول میں رکھنا زیادہ مناسب ہے جہاں وہ Nestjs میں سب سے زیادہ استعمال ہوتے ہیں۔
NestCLI کا استعمال زیادہ تر وقت ماڈیولز بنانے کے لیے کیا جاتا ہے، اور اس ماڈیول کے سیاق و سباق میں تیار کردہ فراہم کنندگان/کنٹرولرز خود بخود CLI کے ذریعے شامل کیے جاتے ہیں۔ یہ فیچر ماڈیولز کے نام سے جانے جاتے ہیں۔
5. استثنائی فلٹرز
استثنیٰ فلٹرز ایرر ہینڈلرز ہیں جن کو اس وقت طلب کیا جاتا ہے جب کوئی کنٹرولر استثناء پھینکتا ہے۔ یہ خود بخود مسئلے کا انتظام کرتا ہے اور ایک مناسب، صارف دوست غلطی کا پیغام فراہم کرتا ہے۔
بہت سے HttpException وراثت میں ملنے والے استثناء پیکیج @nestjs/common کے ذریعے فراہم کیے گئے ہیں، بشمول NotFoundException، BadRequestException، NotAcceptableException، UnauthorizedException، اور بہت سے دوسرے۔ یہاں تک کہ آپ اپنا ExceptionFilter بھی ڈیزائن کر سکتے ہیں۔
6. مڈل ویئر
ایک فنکشن جو روٹ ہینڈلر سے پہلے طلب کیا جاتا ہے اسے مڈل ویئر کہا جاتا ہے۔ درخواست اور رسپانس آبجیکٹ کے ساتھ ساتھ ایپلیکیشن کے درخواست کے جواب کے چکر میں اگلا() مڈل ویئر فنکشن مڈل ویئر فنکشنز تک قابل رسائی ہے۔
ایک متغیر جسے نیکسٹ کہا جاتا ہے عام طور پر اگلے مڈل ویئر فنکشن کی شناخت کے لیے استعمال ہوتا ہے۔ کسٹم نیسٹ مڈل ویئر کو @Injectable() ڈیکوریٹر کا استعمال کرتے ہوئے کسی طریقہ یا کلاس میں لاگو کیا جا سکتا ہے۔
7. گارڈز
محافظ صرف ایک چیز کے ذمہ دار ہیں۔ یہ ان کی ذمہ داری ہے کہ وہ اس بات کا جائزہ لیں کہ آیا کنٹرولر کی طرف سے مخصوص حالات (خاص طور پر، صارف کی وضاحت کردہ منطق) کی بنیاد پر درخواست پر کارروائی کی جائے گی یا نہیں۔
یہ توثیق/ اجازت کے لیے مددگار ہے اور Nestjs میں تجویز کردہ طریقہ ہے۔
اگرچہ تصدیق/اجازتیں وغیرہ، مڈل ویئر کا استعمال کرتے ہوئے کی جا سکتی ہیں، لیکن یہ ایکسپریس یا دوسرے HTTP سرورز میں نہیں کیا جاتا ہے کیونکہ ان کا کوئی مضبوط سیاق و سباق نہیں ہے اور یہ جاننے کی کوئی وجہ نہیں ہے کہ درخواست پر کارروائی کے لیے کون سا طریقہ استعمال کیا جائے گا۔
فوائد
- فریم ورک تشریحات پر بہت زیادہ انحصار کرتا ہے، جو اختتامی نقطہ سے لے کر سویگر دستاویزات تک کچھ بھی تیار کرنے کے لیے استعمال ہوتے ہیں۔ اختتامی نکات بنیادی اور صاف ہیں، اور تشریحات عمومی طور پر ترقی کو آسان بناتی ہیں۔
- Nest.js ایک ماڈیول پر مبنی فریم ورک ہونے کی وجہ سے بہت سے پروجیکٹس میں عمومی مقصد کے ماڈیولز کو خارج کرنا اور کوڈ کو دوبارہ استعمال کرنا آسان ہے۔
- Nest.js کے فولڈر کا ڈھانچہ Angular سے نمایاں طور پر متاثر ہوتا ہے۔ Nest سروس کو ڈیزائن کرتے وقت، یہ کم سے کم وقت کی اجازت دیتا ہے۔
- اجزاء کی اپنی ڈائرکٹریز ہوتی ہیں، جڑ میں ایپلی کیشن ماڈیول اور مین فائل ہوتی ہے۔ ساخت کی سادگی کی وجہ سے، ایپلی کیشن کی ساخت کے بجائے اینڈ پوائنٹس اور ان کے صارفین کے ڈیزائن پر زیادہ توجہ دی جا سکتی ہے۔
- Nest، Angular کی طرح، ایک عمدہ کمانڈ لائن ٹول، Nestjs/cli پیش کرتا ہے، جو نوڈ پیکیج مینیجر کے ذریعے دستیاب ہے۔
خامیاں
- TypeScript کے استعمال اور کونیی انضمام کے لحاظ سے Nest کو فائدہ ہے، لیکن اس میں ایک بہت بڑی کارپوریشن کی مالی مدد کی کمی ہے۔
- دستاویزات کی کمی Nest صارفین کے لیے سب سے بڑا خطرہ ہے۔ اگرچہ فریم ورک دوسرے فریم ورک کے ساتھ بہترین تعاملات رکھتا ہے، لیکن دستاویزات بہت کم ہیں اور کسی ممکنہ مشکلات کو حل نہیں کرتی ہیں۔
- TypeScript کے استعمال اور Angular کے لحاظ سے Nest کا فائدہ ہے۔
نتیجہ
NestJS ڈویلپرز کو ایک بہت بڑا ٹانگ اپ فراہم کرتا ہے۔ ترقی شروع کرنے کے لیے، آپ کو بس اتنا کرنے کی ضرورت ہے۔ ایک نئی ایپ بنائیں اور آپ جانے کے لئے اچھے ہیں. یہ فریم ورک فوری طور پر ایک اہم فروغ فراہم کرتا ہے، جبکہ ایک مناسب ایپ آرکیٹیکچر قائم کرکے اضافی مراحل طے کرنے میں بھی آپ کی مدد کرتا ہے۔
یہ ایپلی کیشنز تیار کرنے کے لیے جدید طریقوں اور ٹیکنالوجی کا استعمال کرتا ہے جو قابل انتظام اور دیرپا دونوں ہیں۔ اسے GraphQL، WebSockets سے منسلک کرنے اور مائیکرو سروسز کی تعمیر کے لیے استعمال کیا جا سکتا ہے۔
جواب دیجئے