السلام عليكم متابعين موقع مهووس برمجة سنبدأ اليوم في أولى دروس شرح nodejs والتي سنقوم فيها بتوضيح وشرح كيف يمكنك انشاء سيرفر بسيط في بيئة node.js وذلك بدون استخدام أي أطر عمل او مكتبات خارجية، فهيا بنا نبدأ. ولكن في البداية دعنا نوضح ما هي بيئة nodejs لمن لم يعرف بها من قبل

ما هي بيئة nodejs ؟

البعض يطلق عليها مكتبة او اطار عمل على الجافا سكريبت ولكن لا تهم المسميات بقدر ما يهم فهم الغرض منها ولكن بشكل عام يمكن تعريف nodejs بأنها بيئة عمل مبنية على لغتي c++\c لتشغيل لغة الجافا سكريبت على السيرفر بدلا من المتصفح لبرمجة تطبيقات الويب والتعامل مع قواعد البيانات وغيرها من تلك الأمور.

ماذا يجب أن تعرفرقبل البدء في سلسلة شرح nodejs ؟

يجب أن يكون لك علم بأساسيات لغة الجافا سكريبت مثل:

1- objects
2-arrays
3- variables
4- data structure
5- object oriented programming
6- conditions
7- loops
8- functions

ماذا تحتاج قبل البدء في تعلم nodejs ؟

للبدء في تعلم nodejs فأنت تحتاج إلى تنصيبها على حاسوبك لكي تتمكن من تشغيل الكود الذي ستكتبه واختباره لذلك يمكنك الذهاب إلى الموقع الرسمي وتخميل النسخة المتوافقة مع جهازك ومن ثم تنصيبها.

أيضا تحتاج إلى terminal أو ما يسمى بمحرر الأوامر وإذا كان نظام حاسوبك ويندوز فيمكنك البحث عنه بكتابة cmd في البحث في برامج الحاسوب، أما إذا كان نظام جهازك لينكس فستجده بشكل تلقائي في شريط الأدوات.

أخر شيئ أنت في حاجة له هو محرر أكواد لتتمكن من كتابة الكود من خلاله وننصح بمحرر أكواد visual studio code لسهولة التعامل فيه وخفته وسرعته.

الأن أنت بصدد كتابة أول برنامج nodejs لك فهيا نبدأ.

يجب أن تعلم ياعزيزي المببرمج أن nodejs مثلها مثل أي لغة برمجة أو بيئة برمجية أخرى فهي تعتمد على مجموعة من المكتبات أو ما يسمى بال modules وهذه ال modules تقسم إلى نوعين:

1- مكتبات و modules داخلية أي مبنية ومتضمنة داخل لغة البرمجة أو بيئة العمل ذاتها ويطلق عليها built in modules.

2- مكتبات خارجية وهذهيتم الاستعانة بها لتسهيل بعض العمل وتتضمك مموعة من الأكواد أو الدوال البرمجية الجاهزة التي تساعدك في عملك، وفي هذه السلسلة من شرح nodejs سنستخدم في البداية المكتبات الداخلية والمتضمنة في بيئة عمل nodejs ذاتها وذلك لنوضح لك كيف تعمل nodejs وكيف تتعامل معها بدون الحاجة إلى مكتبات خارجية.

انشاء سيرفر nodejs

في البداية ستقوم بفتح محرر الأكواد وانشاء مجلد للمشروع وستقوم بانشاء بداخله ملف جافا سكريبت يكون امتداد هذا الملف .js

ولكي تنشئ سيرفر nodejs فأنت بحاجة إلى استدعاء مكتبة داخلية متضمنة في بيئة nodejs وهذه المكتبة تسمى “http” وهي لتي من خلالها سنتمكن من انشاء السيرفر ولكي تستدعي أي مكتبة أو module داخل ملف الجافا سكريبت الخاص بك فأنت تحتاج إلى استخدام دالة في nodejs تسمى “require” وهذه الدالة مسئولة عن استدعاء أي مكتبة داخل الملف:

const http = require("http");

في هذا الكود السابق قمنا بتعريف متغير وسميناه http واستخدمنا دالة require التي من وظيفتها استدعاء مكتبة http داخل الملف.

ملاحظة: المتغير الذي قمنا بتعريفه لم نستخدم كلمة “var” لتعريف المتغيرحيث أننا في هذه الورة سنعتمد على الكود الحديث من لغة الجافا سكريبت، وقمنا باستخدام “const” وهذا لأن هذا المتغير لن نقوم بتعريف مرة أخرى في هذا الملف، اقرأ المقال التالي لمعرفة الفرق بين المتغيرات في الجافا سكريبت.

بعد ذلك يوجد دالة داخل مكتبة http تسمى “createServer” وهذه الدالة واضح من مسماها أنها تقوم بانشاء السيرفر وهي تقبل parameter أو معامل واحد بداخلها وهذا المعامل هو دالة أخرى تقوم أنت بكتابتها وهذا مثال توضيحي:

const http = require("http");
function App(req, res) {}

const server = http.createServer(App);

في المثال السابق قمنا بانشاء دالة سميناها على سبيل المثال App ويمكن أن تسميها كما تريد وهذه الدالة نقوم باستدعاءها بعد ذلك كمعامل أة parameter داخل دالة createServer.

بالنسبة لدالة App التي انشأنها تأخذ معاملين المعامل الأول يسمى request واختصاره req وهو يمثل أوبجيكت يحمل كل بيانات الطلب الذي يأتي للسيرفر من المستخدم، فمثلا عندما تتصفح موقع ما فأنت عندما تفتح صفحة من صفحات الموقع مثلا فأنت تقوم بعمل طلب للسيرفر لعرض هذه الصفحة وهذا الطلب يصل إلى السيرفر وكل بيانات هذا الطلب مثل الرابط الذي طلبت فتحه وال ip الخاص بك والوسيلة التي فتحت بها الطلب سواء طلب عرض بيانات فتكون الوسيلة get أو طلب ادخال بيانات فتكون الوسيلة post وغيرها من المعلومات المهمة جدا للسيرفر وهذه المعلومات كلها يتم تخزينها في هذه المتغير أو المعامل الأول الموجود في دالة App التي قمنا بانشائها.

المعامل الثاني ويسمى response ويمكن أن تسميه res أو أي اسم تريده وهذا أيضا يمثل أوبجيكت يحمل عدد من الدوال والخواص التي من خلالها تقوم بارسال استجابة السيرفر إلى المستخدم، فمثلا إذا أردت أن ترسل رسالة إلى المستخدم عندما يطلب عرض صفحة أو رابط ما فأنت تستخدم دوال داخل هذا الأوبجيكت لعمل ذلك.

في الدرس اليوم لن نتطرق إلى شرح مفصل عن request, response حيث الهدف من شرح nodejs اليوم هو انشاء سيرفر بسيط يستقبل طلب ويعرض استجابة.

ارسال استجابة من سيرفر nodejs

لكي ترسل استجابة من سيرفر nodejs فانت تستخدم دوال داخل response object وهو المعامل الثاني في الدالة التي تستدعيها داخل دالة انشاء السيرفر، ولكي ترسل رسالة معينة او عنصر html مثلا إلى المتصفح فهناك دالتين لفعل ذلك:

1- دالة “write” وهذه الدالة يمكن ان تستخدمها لكتابة راسلة وطباعتها للمستخدم في المتصفح أو عنصر html وتقبل هذه الدالة معامل واحد فقط ويجب ان يكون نص أو من نوع string.

const http = require("http");
function App(req, res) {
   res.write("hello world");
}

const server = http.createServer(App);

ويمكن ان تستخدم هذه الدالة عدة مرات بدون أي مشكلة.

2- دالة “end” وهذه الدالة تستقبل أيضا معامل واحد ويجب أن يكون نص يعني من نوع string.

const http = require("http");
function App(req, res) {
   res.end("hello world");
}

const server = http.createServer(App);

لكن هذه الدالة لا يمكن ان تستخدمها أكثر من مرة بالشكل التالي:

res.end("hello world");
res.end("hello user");

الفرق بين دالة “end” ودالة “write”

دالة write يمكن استخدامها لكتابة أو ارسال محتوى معين وطباعته في المتصفح لكن لا يمكن ان تستخدمها بمرفدها حيث يجب ان تستخدم معها دالة “end” وهذه الدالة تستخدم في الأساس لانهاء اتصال المتصفح بالسيرفر أو لانهاء الطلب الذي تم من المتصفح للسيرفر، فإذا قمت باستخدام دالة write فقط وقمت بتشغيل السيرفر والذهاب للمتصفح للتجربة فستجد ان المتصفح لا يعرض شئ ولا يزال يقوم بعملية التحميل ذلك يجب لانهاء الطلب استخدام دالة “end” كما هو موضح في المثال التالي:

const http = require("http");
function App(req, res) {
   res.write("hello world");
   // end request
   res.end();
}

const server = http.createServer(App);

حتى الأن لن يعمل البرنامج او السيرفر لأننا حتى الأن لم نحدد البورت الذي سيعمل عليه السيرفر، فكل برنامج على جهازك له صلاحيات انشاء بروتوكولات يجب أن يستخدم بورت معين للعمل من خلاله ولكي تحدد البورت لسيرفر nodejs فتقوم باستدعاء فانكشن أو دالة تابعة لدالة createServer وهذه الدالة تسمى listen وتأخذ أول معامل وهو رقم البورت الذي سيعمل عليه السيرفر وثاني معامل هو دالة يتم استدعائها عن تشغيل السيرفر:

const http = require("http");
function App(req, res) {
   res.write("hello world");
}

const server = http.createServer(App);
server.listen(3000, function () {
  console.log("server is running");
});

الأن تم تشغيل السيرفر على بورت رقم 3000، يمكنك الأن الذهاب للمتصفح وكتابة في الشريط العلوى للبحث هذا الرابط : localhost:3000 وسوف يتم عرض رسالة “hello world” .

نكتفي بهذا القدر في هذا الدرس من سلسلة شرح nodejs ونكمل في دروس قادمة بإذن الله، تابعونا.

عزيزي المبرمج إذا كان لديك اي استفسار فيمكنك تركه في التعليقات وسنرد عليك سريعا.