إنشاء وتشغيل مشروع Express.js بواسطة ServBay
ما هو Express.js؟
يُعد Express.js إطار عمل ويب سريع ومفتوح وبسيط قائم على Node.js. يوفر مجموعة قوية من الميزات لبناء تطبيقات ويب أحادية أو متعددة الصفحات أو هجينة. ويُصنف ضمن أكثر أطر العمل شعبية في منظومة Node.js، ويتميز بتصميمه البسيط ومرونته التي تحظى بإعجاب المطورين.
أهم ميزات وفوائد Express.js
- البساطة والمرونة: يقدم Express.js واجهة برمجة تطبيقات بسيطة وآلية مرنة للوسيط البرمجي (Middleware)، ما يزيد الكفاءة في تطوير تطبيقات الويب.
- الوسيط البرمجي: يدعم وسائط برمجية متعددة لمعالجة الطلبات والاستجابات، مثل تحليل جسم الطلبات وإدارة الجلسات وتقديم الملفات الثابتة.
- التوجيه: إمكانيات توجيه متقدمة لمعالجة الطلبات بناءً على طرق HTTP (GET, POST, PUT, DELETE، إلخ) ومسارات URL.
- قدرة عالية على التكامل: يتكامل بسهولة مع محركات القوالب (مثل Pug، EJS، Handlebars) وقواعد البيانات (مثل MongoDB، MySQL، PostgreSQL) وغيرها من وحدات Node.js.
- مجتمع بيئي غني: يمتلك مجتمعًا ضخمًا ودعماً واسعًا للملحقات والوسائط البرمجية الخارجية، مما يجعل إيجاد الحلول والموارد أسهل عند مواجهة المشكلات.
يُسهّل Express.js مهمة بناء تطبيقات ويب وواجهات برمجة التطبيقات (API) عالية الأداء. بفضل ServBay — بيئة تطوير ويب محلية قوية — يمكنك تشغيل مشاريع Express.js بسهولة عبر بيئة Node.js المتكاملة وإدارة المواقع (الوكيل العكسي) وقواعد البيانات بكفاءة.
خطوات إنشاء وتشغيل مشروع Express.js باستخدام ServBay
ستتعلم هنا كيف تستفيد من بيئة Node.js التي يوفرها ServBay لإنشاء وضبط وتشغيل مشروع Express.js. سنستخدم خاصية "المواقع" في ServBay لضبط خادم ويب والوصول إلى المشروع من خلال الوكيل العكسي. هذه الطريقة مناسبة لتطبيقات Node.js أو Python أو Go أو Java التي تعمل على منافذ ports مخصصة.
المتطلبات المسبقة
تأكد قبل البدء من النقاط التالية:
- تم تثبيت ServBay بنجاح على نظام macOS.
- تم تثبيت وتفعيل حزمة Node.js ضمن ServBay. يمكنك الإشراف على ذلك من تبويب "الحزم" في لوحة تحكم ServBay.
- (اختياري) إذا كنت تخطط للاتصال بقواعد البيانات، تأكد من تثبيت وتفعيل الحزم الموافقة (مثل MariaDB, PostgreSQL, MongoDB, Redis, MySQL).
- معرفة أساسية بأوامر الطرفية أو سطر الأوامر.
إنشاء مشروع Express.js
بدء تهيئة المشروع
افتح الطرفية واذهب إلى مجلد المواقع الافتراضي الذي توصي به ServBay والمسار هو
/Applications/ServBay/www
. ثم استخدم الأمرnpx express-generator
لإنشاء هيكل مشروع Express.js بسرعة. أداة npx مرفقة مع npm (من الإصدار 5.2+) وتستخدم لتشغيل حزم node القابلة للتنفيذ.bashcd /Applications/ServBay/www npx express-generator servbay-express-app
1
2سينشئ هذا الأمر مجلدًا جديدًا باسم
servbay-express-app
ضمن المسار المحدد ويحتوي على الهيكل الأساسي للمشروع.تثبيت التبعيات
انتقل إلى مجلد المشروع الجديد
servbay-express-app
وقم بتثبيت التبعيات اللازمة باستخدام:bashcd servbay-express-app npm install
1
2انتظر حتى تكتمل عملية التثبيت.
تعديل مخرجات مشروع Express.js
للتأكد من نجاح تشغيل المشروع، سنعدل المخرجات الافتراضية للصفحة الرئيسية.
تعديل ملف
routes/index.js
يستخدم مشروع Express.js عادة ملفات التوجيه لمعالجة عناوين URL المختلفة. افتح ملف
routes/index.js
داخل المشروع، وهو المسؤول عن معالجة GET للمسار/
. عدّل الكود ليعرض نصًا بسيطًا بدلاً من القالب الافتراضي:javascriptvar express = require('express'); var router = express.Router(); /* GET home page. */ router.get('/', function(req, res, next) { // عدّل لإرسال نص عادي كردّ res.send('Hello ServBay!'); }); module.exports = router;
1
2
3
4
5
6
7
8
9
10احفظ الملف.
دخول وضع التطوير
أثناء التطوير، نحتاج لتشغيل خادم تطوير محلي لمعاينة التغييرات بشكل فوري. لتشغيل خادم Express.js استخدم:
تشغيل خادم التطوير
من مجلد المشروع
servbay-express-app
شغل الخادم بالأمر:bashcd /Applications/ServBay/www/servbay-express-app PORT=8585 DEBUG=servbay-express-app:* npm start
1
2سيظهر في الطرفية معلومات بدء الخادم وملاحظة أن التطبيق يستمع على المنفذ
8585
.تكوين الوكيل العكسي بمواقع ServBay
بما أن تطبيق Express.js يعمل على منفذ مخصّص (8585) وليس منافذ الويب التقليدية (80/443)، سنستخدم مواقع ServBay لتكوين وكيل عكسي. خادم ServBay (عادة Caddy) سيستقبل الطلبات على المنفذين الشائعين ويحوّلها إلى منفذ تطويرك.
من لوحة تحكم ServBay:
- الاسم:
My first Express.js dev site
(اسم للتعرف السريع) - النطاق:
servbay-express-test.servbay.demo
(يسمح نطاق.servbay.demo
بميزة HTTPS الأوتوماتيكي عبر User CA) - نوع الموقع:
وكيل عكسي
- IP:
127.0.0.1
أوlocalhost
- المنفذ:
8585
بعد الحفظ والتطبيق، سيقوم ServBay تلقائيًا بتوليد شهادة SSL وتكوين إعدادات الخادم.
لمزيد من التفاصيل راجع دليل إضافة موقع Node.js للتطوير.
- الاسم:
الوصول إلى موقع وضع التطوير
افتح المتصفح وادخل على
https://servbay-express-test.servbay.demo
وسترى عبارة "Hello ServBay!" معروضة.وبما أن ServBay يدعم أسماء نطاقات مخصصة وSSL مجاني، يمكنك اختبارات HTTPS بسلاسة في بيئة التطوير المحلية، مما يمدك بتجربة شبيهة بالإنتاج ويساعد على اكتشاف المشاكل مبكرًا.
نشر نسخة الإنتاج
بعد اكتمال تطوير مشروع Express.js يمكنك التحضير للنشر أو اختبار وضع الإنتاج محليًا.
تجهيز بيئة الإنتاج
عند تشغيل مشروع Express.js في الإنتاج يُفضل ضبط متغير البيئة
NODE_ENV
ليكونproduction
(يغلق وضع التصحيح، ويحسن الأداء وغير ذلك). تأكد أن الكود يستجيب بشكل صحيح لهذا المتغير.تشغيل خادم الإنتاج
لتشغيل خادم يحاكي وضع الإنتاج واستخدام منفذ مختلف لتمييزه (مثلاً 8586):
bashcd /Applications/ServBay/www/servbay-express-app PORT=8586 NODE_ENV=production npm start
1
2سيرتبط الخادم بمنفذ 8586 ويبدأ باستقبال الطلبات.
تكوين وكيل عكسي جديد (للإنتاج)
أضف موقعًا جديدًا عبر ServBay بالبيانات التالية:
- الاسم:
My first Express.js production site
- النطاق:
servbay-express-test-prod.servbay.demo
(أو أي نطاق آخر يناسب الإنتاج) - نوع الموقع:
وكيل عكسي
- IP:
127.0.0.1
- المنفذ:
8586
احفظ وفعّل التكوينات الجديدة.
- الاسم:
الوصول إلى موقع الإنتاج محليًا
توجه للمتصفح وادخل النطاق
https://servbay-express-test-prod.servbay.demo
للوصول إلى نسخة الإنتاج من التطبيق عبر الوكيل العكسي. تساعد هذه الطريقة في اختبار جميع إعدادات الإنتاج محليًا.
الربط مع قواعد البيانات
ServBay يوفر حزمًا متكاملة لمختلف قواعد البيانات مثل MariaDB وPostgreSQL وMongoDB وRedis. إذا فعّلت أيًا منها عبر ServBay، يمكنك ربط تطبيق Express.js بها مباشرة. عادةً يستخدم ServBay بيانات اعتماد افتراضية مثل: root/password
لـ MariaDB/MySQL، وuser/password
لـ PostgreSQL مع قاعدة افتراضية servbay_default
. تحقق من بيانات الإعدادات حسب لوحة تحكم ServBay.
في ما يلي أمثلة على كيفية الربط مع قواعد البيانات في Express.js (مع ضرورة تثبيت الحزم node الملائمة أولاً).
الارتباط مع MongoDB
ثبت مكتبة Mongoose (رائجة في إدارة MongoDB):
bashnpm install mongoose
1ثم في كود مشروعك (مثلاً في
app.js
أو ملف إعداد منفصل):javascriptvar mongoose = require('mongoose'); // الاتصال بـ MongoDB محليًا، قاعدة بيانات باسم servbay-express-app // افتراضيًا ServBay يتيح الاتصال دون مصادقة إضافية mongoose.connect('mongodb://localhost/servbay-express-app', { useNewUrlParser: true, useUnifiedTopology: true }) .then(() => console.log('Connected to MongoDB')) .catch(err => console.error('MongoDB connection error:', err));
1
2
3
4
5
6
7
8
9
10تأكد من تشغيل حزمة MongoDB في ServBay.
الارتباط مع Redis
قم بتثبيت مكتبة Redis node:
bashnpm install redis
1ثم أضف هذا الكود للاتصال:
javascriptvar redis = require('redis'); // إفترض أن Redis في ServBay يعمل على localhost:6379 بدون كلمة مرور var client = redis.createClient({ host: 'localhost', port: 6379 }); client.on('connect', function() { console.log('Connected to Redis'); }); client.on('error', function (err) { console.log('Redis Error: ' + err); }); // مثال: تعيين أو استرجاع قيمة مفتاح ما // client.set('mykey', 'Hello from Express!', redis.print); // client.get('mykey', function(err, reply) { // if (err) throw err; // console.log(reply); // يطبع "Hello from Express!" // }); // استخدم كائن client عند الحاجة لتنفيذ المعاملات على Redis
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23تأكد من تشغيل خدمة Redis في ServBay.
الارتباط مع MariaDB / MySQL
ServBay يدعم MariaDB وMySQL. الربط مشابه، وغالبًا ما تُستخدم مكتبتا
mariadb
أوmysql2
. نوضح هنا باستخدامmariadb
:ثبّت الحزمة اللازمة:
bashnpm install mariadb # أو npm install mysql2
1ثم استخدم بيانات اعتماد ServBay الافتراضية (root/
password
):javascriptvar mariadb = require('mariadb'); // يعمل MariaDB/MySQL على المنفذ الافتراضي 3306 في ServBay var pool = mariadb.createPool({ host: 'localhost', port: 3306, // المنفذ الافتراضي user: 'root', // اسم المستخدم الافتراضي password: 'password', // كلمة المرور الافتراضية database: 'servbay_express_app', // أنشئ قاعدة البيانات عبر أدوات إدارة ServBay connectionLimit: 5 // حجم مجمع الاتصالات }); pool.getConnection() .then(conn => { console.log("Connected to MariaDB/MySQL"); // استخدم كائن conn لتنفيذ الاستعلامات // conn.query("SELECT 1").then(...).catch(...).finally(() => conn.release()); conn.release(); // أطلق الاتصال بعد الانتهاء }) .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
17
18
19
20
21احرص أولاً على إنشاء قاعدة البيانات
servbay_express_app
من أدوات إدارة قواعد البيانات (كالـ phpMyAdmin أو Adminer) التي يمكن الدخول عليها من خلال ServBay. تأكد أيضًا من تشغيل الخدمة.الارتباط مع PostgreSQL
ثبّت مكتبة
pg
الخاصة بـ PostgreSQL:bashnpm install pg
1قم بالاتصال ببيانات اعتماد ServBay الافتراضية (user/
password
وقاعدةservbay_default
):javascriptvar { Pool } = require('pg'); // يعمل PostgreSQL في ServBay على المنفذ الافتراضي 5432 var pool = new Pool({ user: 'user', // اسم المستخدم الافتراضي host: 'localhost', database: 'servbay_default', // قاعدة البيانات الافتراضية أو قاعدة أخرى حال إنشائها password: 'password', // كلمة المرور الافتراضية port: 5432, // المنفذ الافتراضي }); pool.connect((err, client, done) => { if (err) { console.error('PostgreSQL connection error:', err); return; } console.log('Connected to PostgreSQL'); // استخدم الكائن client لتنفيذ الاستعلامات // client.query('SELECT NOW()', (err, res) => { ... done(); }); done(); // حرر الاتصال بعد الاستخدام }); // أو باستخدام async/await // try { // const client = await pool.connect(); // console.log('Connected to PostgreSQL'); // // const res = await client.query('SELECT NOW()'); // // console.log(res.rows[0]); // client.release(); // حرر الاتصال بعد الاستخدام // } catch (err) { // console.error('PostgreSQL connection error:', err); // }
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
27
28
29
30
31تأكد من تشغيل حزمة PostgreSQL في ServBay.
الخلاصة
باتباع الخطوات أعلاه تكون قد أنشأت وتهيأت وشغلت مشروع Express.js باستخدام ServBay بنجاح. لقد تعلمت كيفية:
- تهيئة مشروع جديد باستخدام
express-generator
. - تشغيل تطبيق Express.js على منفذ محدد.
- استخدام خاصية "المواقع" في ServBay لتكوين وكيل عكسي والوصول إلى تطبيقك عبر منافذ HTTP/S القياسية.
- ربط تطبيقك بقواعد بيانات متنوعة ضمن بيئة ServBay.
يُسهّل ServBay إدارة وتهيئة بيئة تطوير Express.js (أو Node.js) محليًا بحيث يمكنك التركيز أكثر على الكود نفسه. كما أن مزاياه الأخرى — مثل شهادات SSL التلقائية، نسخ المواقع الاحتياطي، عرض السجلات وغيرها — تمنحك مرونة وكفاءة عالية في سير العمل اليومي للتطوير.