إنشاء وتشغيل مشروع NestJS
ما هو NestJS؟
NestJS هو إطار عمل لبناء تطبيقات خادم Node.js كفؤة وقابلة للتوسعة. يتم كتابته باستخدام TypeScript ويستلهم من Angular، مما يتبنى بنية نمطية ونمط حقن التبعيات (DI). يقدم NestJS أدوات وميزات قوية، مما يسهل على المطورين إنشاء تطبيقات معقدة بسهولة.
الميزات والمزايا الرئيسية لـ NestJS
- البنية النمطية: تنظيم الكود باستخدام الوحدات، مما يجعل التطبيق أكثر بنية وقابلية للصيانة.
- حقن التبعيات: نظام حقن تبعيات قوي يعزز من اختبارية الكود وصيانته.
- استخدام TypeScript: الاستفادة من فحص الأنواع الثابتة في TypeScript وميزات JavaScript الحديثة، مما يزيد من كفاءة التطوير وجودة الكود.
- الموشرات الغنية: استخدام الموشرات لتعريف المتحكمات والخدمات والوحدات، مما يجعل الكود أكثر بساطة ووضوحًا.
- نظام بيئي قوي: يمتلك NestJS دعمًا ثريًا للوحدات الإضافية والمكونات الخارجية، مما يجعل التطوير أكثر ملاءمة.
استخدام NestJS يمكن أن يساعد المطورين في بناء تطبيقات ويب وواجهات برمجة تطبيقات عالية الأداء بشكل سريع.
استخدام ServBay لإنشاء وتشغيل مشروع NestJS
في هذه المقالة، سنستخدم بيئة Node.js التي يوفرها ServBay لإنشاء وتشغيل مشروع NestJS. سنستخدم ميزة المضيفات في ServBay لإعداد خادم الويب والوصول إلى المشروع عبر العكس بروكسي.
إنشاء مشروع NestJS
تهيئة المشروع
أولاً، تأكد من تثبيت بيئة Node.js التي يوفرها ServBay. ثم استخدم الأمر التالي لتثبيت CLI الخاص بـ NestJS عالميًا:
bashnpm install -g @nestjs/cli
1في الدليل الجذر المقترح بواسطة ServBay
/Applications/ServBay/www
، أنشئ مشروع NestJS جديد:bashcd /Applications/ServBay/www nest new servbay-nest-app
1
2قم بإدخال اسم المشروع عند الطلب (يُنصح بتسميته
servbay-nest-app
) واختر الخيارات الأخرى حسب الحاجة.تثبيت التبعيات
ادخل إلى دليل المشروع وقم بتثبيت التبعيات:
bashcd servbay-nest-app npm install
1
2
تعديل محتوى إخراج مشروع NestJS
تعديل ملف
src/app.controller.ts
افتح ملف
src/app.controller.ts
، عدل المحتوى ليعرض صفحة الويب "Hello ServBay!":typescriptimport { Controller, Get } from '@nestjs/common'; @Controller() export class AppController { @Get() getHello(): string { return 'Hello ServBay!'; } }
1
2
3
4
5
6
7
8
9
الدخول إلى وضع التطوير
تشغيل خادم التطوير
قم بتشغيل خادم التطوير وحدد المنفذ (مثال: 8585):
bashPORT=8585 npm run start
1سيؤدي ذلك إلى تشغيل خادم تطوير محلي وكشف المنفذ 8585.
تكوين العكس بروكسي لمضيف ServBay
استخدم ميزة "المضيف" في ServBay للوصول إلى الخادم عبر العكس بروكسي. في إعدادات "المضيف" في ServBay، أضف عكس بروكسي جديد:
- الاسم:
موقعي الأول لتطوير NestJS
- الدومين:
servbay-nest-test.dev
- نوع المضيف:
عكس بروكسي
- IP:
127.0.0.1
- المنفذ:
8585
اتبع دليل إضافة موقع تطوير Node.js للمزيد من الخطوات التفصيلية.
- الاسم:
الوصول إلى وضع التطوير
افتح المتصفح وزور
https://servbay-nest-test.dev
لمشاهدة المشروع بشكل حي. بفضل دعم ServBay لأسماء النطاقات المخصصة وشهادات SSL المجانية، ستحصل على أمان أعلى.
نشر إصدار الإنتاج
تحضير بيئة الإنتاج
تأكد من أن مشروعك يعمل بشكل طبيعي في بيئة الإنتاج. عادةً لا تحتاج مشاريع NestJS إلى خطوات بنائية محددة، لكن قد تحتاج إلى إعداد بعض المتغيرات البيئية أو القيام بتعديلات أخرى.
تشغيل خادم الإنتاج
قم بتشغيل خادم الإنتاج وحدد المنفذ (مثال: 8586):
bashPORT=8586 NODE_ENV=production npm run start:prod
1تكوين العكس بروكسي لمضيف ServBay
استخدم ميزة "المضيف" في ServBay للوصول إلى الخادم عبر العكس بروكسي. في إعدادات "المضيف" في ServBay، أضف عكس بروكسي جديد:
- الاسم:
موقعي الأول في إنتاج NestJS
- الدومين:
servbay-nest-test.prod
- نوع المضيف:
عكس بروكسي
- IP:
127.0.0.1
- المنفذ:
8586
- الاسم:
الوصول إلى وضع الإنتاج
افتح المتصفح وزور
https://servbay-nest-test.prod
لمشاهدة الإصدار الإنتاجي. بفضل أسماء النطاقات المخصصة وشهادات SSL المجانية في ServBay، سيكون موقعك أكثر أمانًا وثقة.
اتصال قواعد البيانات
يوفر ServBay دعمًا لقواعد البيانات مثل Redis، MariaDB، PostgreSQL، وMongoDB. إليك أمثلة عن كيفية الاتصال بهذه القواعد.
الاتصال ب MongoDB
قم بتثبيت
@nestjs/mongoose
وmongoose
:bashnpm install @nestjs/mongoose mongoose
1ثم قم بإدخال الاتصال في المشروع:
typescriptimport { Module } from '@nestjs/common'; import { MongooseModule } from '@nestjs/mongoose'; import { AppController } from './app.controller'; import { AppService } from './app.service'; @Module({ imports: [ MongooseModule.forRoot('mongodb://localhost/servbay-nest-app'), ], controllers: [AppController], providers: [AppService], }) export class AppModule {}
1
2
3
4
5
6
7
8
9
10
11
12
13الاتصال ب Redis
قم بتثبيت
@nestjs/redis
وredis
:bashnpm install @nestjs/redis redis
1ثم قم بإدخال الاتصال في المشروع:
typescriptimport { Module } from '@nestjs/common'; import { RedisModule } from '@nestjs/redis'; import { AppController } from './app.controller'; import { AppService } from './app.service'; @Module({ imports: [ RedisModule.forRoot({ url: 'redis://localhost:6379', }), ], controllers: [AppController], providers: [AppService], }) export class AppModule {}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15الاتصال ب MariaDB
قم بتثبيت
@nestjs/typeorm
وmysql2
:bashnpm install @nestjs/typeorm mysql2
1ثم قم بإدخال الاتصال في المشروع:
typescriptimport { Module } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; import { AppController } from './app.controller'; import { AppService } from './app.service'; @Module({ imports: [ TypeOrmModule.forRoot({ type: 'mariadb', host: 'localhost', port: 3306, username: 'root', password: 'password', database: 'servbay_nest_app', entities: [], synchronize: true, }), ], controllers: [AppController], providers: [AppService], }) export class AppModule {}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22الاتصال ب PostgreSQL
قم بتثبيت
@nestjs/typeorm
وpg
:bashnpm install @nestjs/typeorm pg
1ثم قم بإدخال الاتصال في المشروع:
typescriptimport { Module } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; import { AppController } from './app.controller'; import { AppService } from './app.service'; @Module({ imports: [ TypeOrmModule.forRoot({ type: 'postgres', host: 'localhost', port: 5432, username: 'user', password: 'password', database: 'servbay_nest_app', entities: [], synchronize: true, }), ], controllers: [AppController], providers: [AppService], }) export class AppModule {}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
من خلال هذه الخطوات، فلقد نجحت في إنشاء وتشغيل مشروع NestJS واستخدام ميزات ServBay لإدارة والوصول إلى مشروعك، بالإضافة إلى الاتصال بأنواع متعددة من قواعد البيانات.