نود جي اس
|

نود جي اس : أسهل الطرق لتفعيل خادم Node js

نود جي اس هي بيئة تشغيل تعمل بواسطة جافا سكريبت تعتبر مفتوحة المصدر والمنصات.

يمكن أن تعمل نود جي اس على أنظمة التشغيل ويندوز ولينيكس وماك.

تعمل نود جي اس بواسطة محرك جافا سكريبت v8 فهي تقوم بتنفيذ الكود من خارج متصفح الويب.

على الرغم من ذلك فقد بات من الممكن أن تتيح نود جي اس للمطورين استخدام جافا سكريبت في كتابة سطر الأوامر من جهة الخادم.

تختلف نود جي اس كونها لغة تقوم بتنفيذ العمليات Realtime ما يعني أنها تحقق سرعة فائقة في العمل على الخوادم.

لمحة عن نود جي اس

قام بتصميمها المهندس ريان دال في عام 2009 وتعتبر إحدى مكتبات جوجل التي يمكن تضمينها في المتصفح.

بالتالي كانت فكرتها تدور حول العمل في مشروع CommonJS واستعمال لغة جافا سكريبت خارج متصفحات الويب.

على سبيل المثال يمكن النظر إلى نود جي اس على أنها تقنية خادم وليست لغة برمجة كما يروج لها.

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

مزايا خادم nodeJS

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

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

إلا أن أهم ما يمكن الحصول عليه من خلالها هو تنفيذ الكود بأداء يحمل عن كاهل الخادم الكثير من المهام.

السرعة والفاعلية

هناك بعض الفروقات أثناء الانتقال لبيئة صفحات الويب التي تم إعدادها بواسطة نود جي اس.

وخاصة عند الدخول إلى الـ syntax الخاص بها بالتالي قد تتفوق على لغة PHP وغيرها من لغات الويب في منح حرية الخادم.

فتح منافذ التوصيل

توفر نود جي اس عمليات اتصال بين العملاء عبر منافذ يتم من خلالها تقليل عمليات الطلب المتكررة.

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

وتنطبق جميع الحالات والأمثلة على بعض المواقع الشهيرة مثل فيسبوك أو يوتيوب.

على سبيل المثال يوفر حجز منفذ على الخادم تفاعل لن توفره لغات الويب المتعددة.

وخاصة عند الاستماع إلى عنوان الخادم والتأثير على متغيرات الصفحة بشكل لحظي.

يمكن اعتبار جلسات العملاء واحدة من الأمثلة على تفاعل صفحات نود جي اس.

توثيق عمليات الاتصال

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

تدعم شهادات الأمان النشطة قنوات إتصال توفر حماية عالية لجلسات الخادم.

الاستغناء عن طلبات الخادم

طلبات الخادم هي واحدة من أكثر العمليات استخدامًا في قواعد البيانات وتتوفر في لغات ويب أساسية مثل PHP و Python و C#.

على صعيد هذا الجانب فإن الاستمرار في بناء المواقع اعتمادًا على طلبات الخادم الكبيرة قد يحتاج إلى بيئة نود جي إس بشكل إضافي.

فهي من شأنها تقليل طلبات الخادم أو حتى الاستغناء عن البعض منها.

لكن غالبًا ما يعتمد الأمر على نواة الموقع ومدى إمكانية دعمها لهذه التقنية.

خطوات تحضير خادم nodejs

عند تفعيل خادم نود جي اس غالبًا ما يتم الاتصال ببعض المصادر الخاصة به على شبكة الإنترنت وتفعيل الحزم الإضافية داخل المشروع.

بالتالي سوف يتم تفعيل الخادم داخل مشروع Tutorial الذي قمنا بتعريفه في دورات سابقة.

نقوم بفتح شاشة الكونسول cmd بنظام ويندوز أو Mac أو Linux.

وفي الحالة الخاصة بنا نعمل على استخدام شاشة الكونسول لنظام windows 8.1.

تحضير خادم نود جي اس

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

npm init

npm install

npm install express

npm install mysql

npm install socket.io

npm install body-parser

بعد الانتهاء من تهيئة الخادم لا بد من ملئ بيانات الحزمة المتعلقة ببعض المعلومات مثل الاسم والاصدار.

يمكن تخطي جميع البيانات بالضغط على زر الإدخال Enter.

وعند الانتهاء نقوم بعمل موافقة على تخزين الحزمة بكتابة Y او Yes وزر الإدخال.

الأمر npm init يقوم بعمل تهيئة وتخصيص الأماكن للمشروع.

وكذلك الأمر بالنسبة للأمر npm install فهو يعمل على تنصيب الحزم الأساسية.

والأمر npm install express يعمل على إضافة خادم الويب الخاص بتشغيل الصفحات.

بينما الأمر npm install mysql تكمن الحاجة إليه عند الاتصال بقواعد البيانات mysql.

والأمر socket.io سوف يتم التطرق له في دورات أخرى حيث يساعد المستخدمين على تبادل معلومات الاتصال الفعالة.

بينما الأمر الأخير body-parser يفيد في تحويل بعض القيم إلى قراءات صحيحة.

جلسات الاستماع

يوفر خادم نود جي اس عملية إتصال ببعض الوظائف المعدة مسبقًا وذلك لمهام الاستخدام المتعدد.

أهم تلك الأوامر بروتوكولات http أو https.

وهي مجموعة من المهام التي تساعد على إضافة الخادم باستخدامها لكي يتمكن من عملية توجيه الصفحات.

يتم إجراء طلب request ولمرة واحدة ومن خلاله يمكن التفاعل مع الخادم لإضافة أو إلغاء أو تمرير البيانات.

بالتالي نستطيع الوصول للخادم عن طريق الكود التالي :

/**
 * Created by Mmutawe on 5/26/2022.
 */


var http = require('http');

const server = http.createServer((req , res) =>{
    console.log('request made');

    //set header content type
    res.setHeader('Content-Type' , 'text/html')
    res.write('<h3>hello world</h3>');
    res.end();
});

server.listen(3000 , 'localhost' , () =>{
   console.log('listening for request on port 3000');
});



تشير الشيفرة السابقة إلى وجود عمليتين هما الطلب والاستجابة.

تذهب الطلبات إلى منفذ معد مسبقًا في الخادم ويتم الاستجابة بوسوم HTML التي تم اعدادها في البرنامج.

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

وخاصة بعد أن قمنا بتوجيه الخادم لمنفذ 3000.

منافذ الخادم نود جي اس

يمكن الوصول إلى الكود عن طريق العنوان http:localhost:3000.

وتصف الشيفرة السابقة إجراء إتصال عن طريق خادم محلي.

أما في حال ما قرر المطور العمل على اسم النطاق يجب الإشارة إلى عنوانه بدلا من localhost.

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

لكي يعمل هذا الإجراء يستدعي الأمر كتابة التعليمة التالية في الكونسول:

node server.js

يعمل هذا الأمر على تشغيل الخادم والوصول لأي تحديثات يمكن التطرق لها.

ونضع بعين الاعتبار إجراء إتصال جديد عند كل عملية تحديث تجري على المشروع.

عند زيارة العنوان http:localhost:3000 نجد العبارة الترحيبية Hello World.

وخاصة أن وسوم HTML يمكن تضمينها أثناء العمل على أي لغة ويب .

طباعة عبارة Hello World

تضمين الصفحات في خادم nodejs يتطلب إنشاء صفحة server.js و صفحة index.html بشكل أساسي.

وما دون ذلك هو بمثابة تخصيص لإجراء عمليات اتصال أخرى.

على سبيل المثال سوف نقوم بإضافة صفحتي server.js و index.html في المشروع tutorial.

تحتوي صفحة server.js على الشيفرة التالية:

/**
 * Created by Mmutawe on 5/26/2022.
 */


var http = require('http');
const fs = require('fs');

const server = http.createServer((req , res) =>{
    console.log('request made');

    //send an html file
    fs.readFile('./index.html' , (err , data) =>{
        if(err){
            console.log(err);
            res.end();
        }else{
            res.write(data);
            res.end();
        }
    });

});

server.listen(8080, 'localhost' , () =>{
   console.log('listening for request on port 8080');
});



تتضمن صفحة index.html البيانات التالية:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div>Welcome to first Hello world in index.html</div>
</ body >
</html >

في حال ما قمنا بزيارة الصفحة localhost:8080. نجد أن البيانات القديمة لا زالت متواجدة بالتالي يجب عمل تحديث لصفحة الخادم.

حيث يتطلب ذلك الضغط على CTRL+C في شاشة الكونسول ومن ثم عمل اتصال مجددًا عبر الأمر node server.js.

تحديث الاتصال بخادم نود جي اس

يشير تحديث الإتصال إلى ظهور النتائج على النحو المطلوب.

لكن تفعيل اتصال الخادم في كل عملية تحديث يعتبر أمر ممل للغاية وخاصة في حال ما أراد المستخدم إبقاء الخادم في وضعية إتصال.

وفي تلك الحالة نقوم فصل الخادم عبر الضغط على CTRL + C.

هناك العديد من الأدوات التي تجعل الخادم متصلا بشكل دائم ومنها nodemon او for ever.

لكن في دورتنا قد تفي أداة nodemon الغرض مع الحفاظ على بقاء الخادم متصل.

npm install nodemon

الآن نقوم بتفعيل الخادم مجددًا باستخدام الأمر:

nodemon server.js

وفي هذه الحالة فإن أي عملية تحديث على صفحة الاتصال يتم تحديثها تلقائيًا.

جلب البيانات من قواعد البيانات mysql

جميع الأنشطة الشبكية وخوادمها تحتاج إلى قواعد البيانات فهي عامل رئيسي في نجاح المواقع الإلكترونية وتطبيقات الويب.

ويحقق لنا خادم نود جي اس خيارات متعددة في الاتصال بقواعد البيانات.

على سبيل المثال يفضل البعض استخدام mongodb على أن يعمل باستخدام mysql أو حتى mariadb.

وقد يروج للبعض العمل في خوادم sql server المقدمة من مايكروسوفت لكن يبقى ما هو أهم من ذلك ألا وهي نواة المشروع الأساسية.

ما يعني أن البعض يبدأ مشروع الويب بلغة javascript والبعض يحتاج بضعا من الاستثناءات ليحل خادم nodejs بدلا من PHP.

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

بالتالي يجب إضافة جدول داخل قواعد البيانات قبل نسخ الشيفرة التالية :

const {createPool} = require('mysql')

const pool = createPool({

    host: "localhost" ,

    user: "root" ,

    password: ""

});




pool.query(`select * from con_tut.data_db` , (err , res)=>{

    return console.log(res);

})

نقوم بالتعديل في شيفرة server.js للحصول على نتائج جملة الاستعلام السابقة.

لكن نضع بعين الاعتبار أننا قمنا باستقبال النتائج في شاشة الكونسول لتظهر لنا العناصر كما في الصورة التالية.

استدعاء نتائج قواعد البيانات

نلاحظ في الصورة السابقة أننا قمنا بتمرير عناصر الجدول data db من خلال الطباعة على شاشة الكونسول.

بالتالي فإن اصطحابها إلى صفحات أخرى هو أمر ممكن باستخدام تقنيات أجاكس والتي سيتم شرحها في دورات لاحقة.

أسباب الحاجة إلى خادم نود جي اس

  • بناء تطبيقات تفاعلية مثل المحادثات وجهات الاتصال.
  • إيقاف طلبات الخادم المستمرة عبر المؤقتات.
  • تحديث الإحصائيات والبيانات بشكل آني.
  • تحقيق عمليات الاتصال خارج المتصفح.

المراجع

  1. wikipedia^What is node js.
  2.  Dir Command in ^ windows CMD.
  3. ^ Node.js WIKI.
تقييم هذا المنشور

Similar Posts

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *