في عام 2021 ، كانت JavaScript هي لغة البرمجة الأكثر استخدامًا.
لا يمكن إنكار جاذبية هذه التقنية ، كما يتضح من العدد الهائل من الأطر التي تمكّن برمجة JavaScript.
هناك Angular و React و Vue على الواجهة الأمامية ، بالإضافة إلى Express و Next في الواجهة الخلفية ، على سبيل المثال لا الحصر.
مع وجود العديد من الأطر الرائعة لبرمجة الواجهة الخلفية في JavaScript التي يمكن الوصول إليها ، قد تفكر في سبب البحث عن شيء مختلف بدلاً من مجرد استخدام Express أو Next.
ربما تحتاج إلى بدء عملية التطوير بسرعة باستخدام نموذج مرجعي لائق ، وإضافة ليس فقط وحدات تحكم جديدة ولكن أيضًا الخدمات تجعلك مريضًا.
أو تريد إنشاء برنامج كبير وقابل للتطوير يسهل إدارته. أو ربما ترغب ببساطة في العمل بطريقة أكثر كفاءة وملاءمة.
بغض النظر عما ينطبق على ظروفك ، يمكن أن يكون Nest.js هو الحل الأمثل لاحتياجاتك.
سيوفر هذا المنشور رؤى NestJS بالإضافة إلى الخبرة العملية.
ما هو NestJS؟
نيستجس هو إطار عمل تقدمي للعقدة مفتوح المصدر وقابل للتوسيع وقابل للتكيف .js إطار عمل لبناء الأنظمة الخلفية وإشراكها وتحديها. إنها الآن العقدة ذات أسرع معدل نمو.
إطار عمل TypeScript لـ js. يتم استخدام NestJS لإنشاء تطبيقات قابلة للتطوير وقابلة للاختبار ومتصلة بشكل غير محكم.
يضيف قابلية التوسع إلى Node. تم نقل خوادم Js إلى مستوى جديد تمامًا. تعد PostgreSQL و MongoDB و MySQL من بين قواعد البيانات المدعومة.
إن NestJS قابل للتوسعة لأنه يمكن استخدامه مع مكتبات أخرى ؛ مرنة بسبب نظامها البيئي الكامل التكيف. وتقدمية لأنها تدعم ميزات JavaScript ومبادئ التصميم.
يتأثر بشكل أساسي بـ 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 (Get ، Post ، Put ، Delete ، وما إلى ذلك) ، كما هو موضح في الكود أدناه.
يستخدم Nestjs أسلوب الزخرفة ويتم تطويره في الغالب في Typescript ، على الرغم من أنه يدعم أيضًا JavaScript. يمكنك أيضًا استخدام مدقق فئة للتحقق من صحة نص الطلب.
سأقوم فقط بعمل مثيل لخادم Nestjs وأضيف ValidationPipe عالميًا. الأنابيب هي مجرد طرق يتم تنفيذها قبل أجهزة التحكم. يمكن أيضًا تطبيق الأنابيب على مستوى الأسلوب / الوسيطة باستخدام مصممUsePipes.
3. الموفرون
يعتبر الموفرون مكونًا مهمًا آخر في Nestjs. إلى حد بعيد ، كنت أقوم بتخزين البيانات في متغير مؤقت. هذا هو السبب في أنه يمكن إنجاز مثل هذه المهمة البسيطة باستخدام معالجات وحدة التحكم.
ومع ذلك ، بالنسبة للمنطق الأكبر والأكثر تعقيدًا ، سيكون فصل الكود وإعادة استخدامه أمرًا صعبًا. هذا هو الوقت الذي يأتي فيه الموردون. يمكنك إعلان / إنشاء موفر أعلى فئة باستخدامInjectable decorator. بعد ذلك ، باستخدام الموفرين ، يمكنك القيام بحقن التبعية والتسجيل ومهام أخرى.
4. وحدات
وحدات Nestjs ليست عالمية ؛ بدلا من ذلك ، لديهم عمق.
ومع ذلك ، يمكن مشاركتها مع أي وحدات أخرى أيضًا. على الرغم من أنه ، مثل Angular ، يقدم وحدات عالمية ، فمن المستحسن الاحتفاظ بالخدمات / وحدات التحكم في الوحدة حيث يتم استخدامها بشكل شائع في Nestjs.
يتم استخدام NestCLI لإنتاج الوحدات النمطية في معظم الأوقات ، ويتم إضافة الموفرين / وحدات التحكم التي تم إنشاؤها في سياق تلك الوحدة تلقائيًا بواسطة CLI. تُعرف هذه الوحدات النمطية للميزات.
5. مرشحات الاستثناء
عوامل تصفية الاستثناءات هي معالجات الأخطاء التي يتم استدعاؤها عندما يطرح جهاز التحكم استثناءً. فهو يدير المشكلة تلقائيًا ويقدم رسالة خطأ مناسبة وسهلة الاستخدام.
يتم توفير العديد من الاستثناءات الموروثة لـ HttpException بواسطة package @ nestjs / common ، بما في ذلك NotFoundException و BadRequestException و NotAcceptableException و UnauthorizedException والعديد غيرها. يمكنك حتى تصميم ExceptionFilter الخاص بك.
6. الوسيطة
الوظيفة التي يتم استدعاؤها قبل معالج المسار تسمى البرمجيات الوسيطة. كائنات الطلب والاستجابة ، بالإضافة إلى الوظيفة التالية () الوسيطة في دورة الطلب والاستجابة للتطبيق ، يمكن الوصول إليها لوظائف البرامج الوسيطة.
عادةً ما يتم استخدام متغير يسمى next لتحديد وظيفة الوسيطة التالية. يمكن تنفيذ برمجية Nest الوسيطة المخصصة بطريقة أو فئة باستخدام decoratorInjectable ().
7. الحراس
الحراس مسؤولون فقط عن شيء واحد. تقع على عاتقهم مسؤولية تقييم ما إذا كان سيتم معالجة الطلب من قبل وحدة التحكم بناءً على ظروف محددة (على وجه التحديد ، المنطق الذي يحدده المستخدم).
إنها مفيدة للمصادقة / التفويض وهي الطريقة الموصى بها في Nestjs.
على الرغم من أن المصادقة / الأذونات ، وما إلى ذلك ، يمكن إجراؤها باستخدام البرامج الوسيطة ، إلا أنها لا تتم في خوادم HTTP السريعة أو خوادم HTTP الأخرى نظرًا لعدم وجود سياق قوي مرتبط بها وليس لديها سبب لمعرفة الطريقة التي سيتم استخدامها لمعالجة الطلب.
المزايا
- يعتمد إطار العمل بشكل كبير على التعليقات التوضيحية ، والتي تُستخدم لإنتاج أي شيء من نقاط النهاية إلى وثائق Swagger. نقاط النهاية أساسية ومرتبة ، كما أن التعليقات التوضيحية تجعل التطوير أسهل بشكل عام.
- من السهل إضفاء الطابع الخارجي على الوحدات النمطية للأغراض العامة وإعادة استخدام التعليمات البرمجية في العديد من المشاريع نظرًا لأن Nest.js عبارة عن إطار عمل قائم على الوحدة النمطية.
- يتأثر هيكل مجلد Nest.js بشكل كبير بـ Angular. عند تصميم خدمة Nest ، فإن هذا يسمح بأدنى حد من التوقف.
- تحتوي المكونات على أدلة خاصة بها ، مع احتواء الجذر على وحدة التطبيق والملف الرئيسي. نظرًا لبساطة الهيكل ، يمكن إيلاء المزيد من الاهتمام لتصميم نقاط النهاية وعملائها بدلاً من هيكل التطبيق.
- يوفر Nest ، مثل Angular ، أداة سطر أوامر لطيفة ، Nestjs / cli ، والتي تتوفر من خلال Node Package Manager.
عيوب
- يتمتع Nest بميزة من حيث استخدام TypeScript والتكامل Angular ، لكنه يفتقر إلى الدعم المالي من شركة ضخمة.
- يشكل الافتقار إلى التوثيق أكبر تهديد لمستخدمي Nest. على الرغم من أن إطار العمل له تفاعلات ممتازة مع أطر أخرى ، إلا أن التوثيق شحيح ولا يعالج أي صعوبات محتملة.
- يتمتع Nest بميزة من حيث استخدام TypeScript و Angular.
وفي الختام
يوفر NestJS للمطورين دفعة كبيرة. لبدء التطوير ، كل ما عليك فعله هو إنشاء تطبيق جديد وأنت على ما يرام. يوفر إطار العمل هذا دفعة كبيرة على الفور ، بينما يساعدك أيضًا في اتخاذ خطوات إضافية من خلال إنشاء بنية تطبيق مناسبة.
فهي تستخدم أحدث الأساليب والتقنيات لإنتاج تطبيقات يمكن إدارتها وطويلة الأمد. يمكن استخدامه للاتصال بـ GraphQL و WebSocket وإنشاء خدمات صغيرة.
اترك تعليق