إنشاء وتشغيل مشروع Hapi.js
ما هو Hapi.js؟
Hapi.js هو إطار قوي ومرن مبني على Node.js لإنشاء التطبيقات والخدمات. تم إنشاؤه بواسطة Walmart Labs ويشتهر بنظام الإضافات الخاص به والخصائص الغنية. يوفر Hapi.js طريقة سلسلة لمعالجة طلبات HTTP والاستجابات، مما يمكن المطورين من بناء تطبيقات ويب وواجهات برمجية عالية الأداء بكفاءة أكبر.
الميزات والفوائد الرئيسية لـ Hapi.js
- نظام الإضافات: يمتلك Hapi.js نظام إضافات قوي يمكن بسهولة توسيع وإعادة استخدام الكود.
- نظام التوجيه: يوفر تعريفًا مرنًا وفعالًا للتوجيه ومعالجته.
- التأكد من صحة المدخلات: يحتوي على ميزات قوية للتحقق من صحة المدخلات لضمان سلامة البيانات وأمانها.
- نظام بيئي غني: يحتوي على مجموعة غنية من الإضافات ودعم مجتمعي يغطي مختلف احتياجات الوظيفية.
- الأمان: يحتوي على ميزات أمان مدمجة مثل الحماية من تزوير الطلبات عبر المواقع (CSRF) والهجمات النصية عبر المواقع (XSS).
باستخدام Hapi.js، يمكنك مساعدة المطورين على بناء تطبيقات ويب وواجهات برمجية عالية الأداء وآمنة بسرعة.
إنشاء وتشغيل مشروع Hapi.js باستخدام ServBay
في هذه المقالة، سنستخدم بيئة Node.js المدعمة من قبل ServBay لإنشاء وتشغيل مشروع Hapi.js. سنستخدم وظيفة "المضيف" في ServBay لإعداد خادم ويب وتحقيق الوصول إلى المشروع عبر الوكيل العكسي.
إنشاء مشروع Hapi.js
تهيئة المشروع
أولاً، تأكد من أنك قد قمت بتثبيت بيئة Node.js المدعمة من قبل ServBay. ثم قم بإنشاء مشروع Hapi.js جديد في دليل الجذر المقترح من قبل ServBay
/Applications/ServBay/www
:bashcd /Applications/ServBay/www mkdir servbay-hapi-app cd servbay-hapi-app npm init -y npm install @hapi/hapi
1
2
3
4
5إنشاء ملف التطبيق
في دليل الجذر للمشروع، أنشئ ملف
server.js
وأضف الرموز التالية:javascriptconst Hapi = require('@hapi/hapi'); const init = async () => { const server = Hapi.server({ port: process.env.PORT || 3000, host: 'localhost' }); server.route({ method: 'GET', path: '/', handler: (request, h) => { return 'Hello ServBay!'; } }); await server.start(); console.log('Server running on %s', server.info.uri); }; process.on('unhandledRejection', (err) => { console.log(err); process.exit(1); }); init();
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
الدخول إلى وضع التطوير
تشغيل خادم التطوير
قم بتشغيل خادم التطوير وحدد المنفذ (مثل: 8585):
bashPORT=8585 node server.js
1سيشغل هذا الخادم محلياً ويعرض المنفذ 8585.
تكوين الوكيل العكسي لمضيف ServBay
باستخدام وظيفة "المضيف" في ServBay، قم بالوصول إلى خادم التطوير عبر الوكيل العكسي. في إعدادات "المضيف" في ServBay، أضف وكيل عكسي جديد:
- الاسم:
موقع Hapi.js الأول للتطوير
- اسم النطاق:
servbay-hapi-test.dev
- نوع المضيف:
وكيل عكسي
- IP:
127.0.0.1
- المنفذ:
8585
لمزيد من التفاصيل حول خطوات الإعداد، يرجى الرجوع إلى إضافة موقع تطوير باستخدام Nodejs.
- الاسم:
الوصول إلى وضع التطوير
افتح المتصفح وقم بزيارة
https://servbay-hapi-test.dev
لمعاينة المشروع في الوقت الحقيقي. نظرًا لأن ServBay يدعم أسماء نطاق مخصصة وشهادات SSL مجانية، سوف تتحقق من أمان أكبر.
نشر النسخة الإنتاجية
إعداد بيئة الإنتاج
تأكد من أنك قد أعددت مشروعك ليعمل في بيئة الإنتاج بشكل طبيعي. عادةً لا يحتاج مشروع Hapi.js إلى خطوات بناء خاصة، ولكن قد تحتاج إلى إعداد بعض المتغيرات البيئية أو تنفيذ تكوينات أخرى.
تشغيل خادم الإنتاج
قم بتشغيل خادم الإنتاج وحدد المنفذ (مثل: 8586):
bashPORT=8586 NODE_ENV=production node server.js
1تكوين الوكيل العكسي لمضيف ServBay
باستخدام وظيفة "المضيف" في ServBay، قم بالوصول إلى خادم الإنتاج عبر الوكيل العكسي. في إعدادات "المضيف" في ServBay، أضف وكيل عكسي جديد:
- الاسم:
موقع Hapi.js الأول للإنتاج
- اسم النطاق:
servbay-hapi-test.prod
- نوع المضيف:
وكيل عكسي
- IP:
127.0.0.1
- المنفذ:
8586
- الاسم:
الوصول إلى وضع الإنتاج
افتح المتصفح وقم بزيارة
https://servbay-hapi-test.prod
لاستعراض النسخة الإنتاجية. باستخدام أسماء النطاق المخصصة وشهادات SSL المجانية المقدمة من ServBay، سيكون موقعك أكثر أمانًا وموثوقية.
الاتصال بقواعد البيانات
يدعم ServBay قواعد البيانات Redis وMariaDB وPostgreSQL وMongoDB. فيما يلي كيفية الاتصال بهذه القواعد.
الاتصال بـ MongoDB
قم بتثبيت
@hapi/nes
وmongoose
:bashnpm install mongoose
1ثم قم بإدخالها في المشروع وتوصيلها:
javascriptconst mongoose = require('mongoose'); mongoose.connect('mongodb://localhost/servbay-hapi-app', { useNewUrlParser: true, useUnifiedTopology: true }) .then(() => console.log('MongoDB connected')) .catch(err => console.log(err));
1
2
3
4
5الاتصال بـ Redis
قم بتثبيت
redis
:bashnpm install redis
1ثم قم بإدخالها في المشروع وتوصيلها:
javascriptconst redis = require('redis'); const client = redis.createClient(); client.on('error', function (err) { console.log('Error ' + err); }); client.on('connect', function () { console.log('Redis client connected'); });
1
2
3
4
5
6
7
8
9
10الاتصال بـ MariaDB
قم بتثبيت
mariadb
:bashnpm install mariadb
1ثم قم بإدخالها في المشروع وتوصيلها:
javascriptconst mariadb = require('mariadb'); const pool = mariadb.createPool({ host: 'localhost', user: 'root', password: 'password', database: 'servbay_hapi_app' }); pool.getConnection() .then(conn => { console.log("Connected to MariaDB"); conn.release(); //release to pool }) .catch(err => { console.log("Not connected due to error: " + err); });
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16الاتصال بـ PostgreSQL
قم بتثبيت
pg
:bashnpm install pg
1ثم قم بإدخالها في المشروع وتوصيلها:
javascriptconst { Pool } = require('pg'); const pool = new Pool({ user: 'user', host: 'localhost', database: 'servbay_hapi_app', password: 'password', port: 5432, }); pool.connect((err, client, done) => { إذا ما حدث خطأ فسوف يرمى الخطأ if (err) throw err; console.log('Connected to PostgreSQL'); done(); });
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
باتباع هذه الخطوات، نجحت في إنشاء وتشغيل مشروع Hapi.js، واستخدام الوظائف المقدمة من ServBay لإدارة والوصول إلى مشروعك مع ربطه بمجموعة متنوعة من قواعد البيانات.