مقدمة

أنا مبرمج وأنا من محبي اللغات وتقنيات البرمجة الحديثة ومؤخرا أحاول الخروج من دوامة التكنولوجيات القديمة والتي لا تمنحك الخيارات الكافية للتحكم ببرنامجك، ومن أهم هذه التكنولوجيات الحديثة (البرمجة بلغة الجافا سكريبت Javascript ولغات الويب بصفة عامة) . فبدأت بالبحث عن التكنولوجيا المناسبة لتعوض ما كنت أستخدم مسبقا (PHP, ASP.net/asp.core) أو بالنسبة لتطبيقات المكتب (C#) فمن الصعب تعويض هاته التكنولوجيات العريقة، المتماسكة، والمتكاملة ...

فأنا لا أريد تعويضها هكذا في سبيل المتعة أو التغيير ولكن نظرا لعدة عوامل منها :

بالنسبة للخوادم :

  • بعضها (PHP) يصعب العمل عليه مباشرة نظرا لأحتمال حدوث ثغرات أو نسيان أشياء لأنه لإنشاء شيء صغير يجب كتابة كود طويل جدا مما يلزم أحيانا أستخدام نظام Framework للتسهيل وتنظيم العمل مما يتطلب الكثير الإعدادات، ...
  • البعض الآخر(ASP.NET) يتعلق بنظام معين كويندوز والذي يصعب وجود استضافة
  • البعض(asp.core) تم نقله من ويندوز إلى جميع الأنظمة لكن إستخدامه أصبح جد مزعج نظرا لصعوبة التثبيت و/أو التعليمات الجديدة التي تحاول التعلق بالتكنولوجيات الحديثة لكن في رأيي دون جدوى

بالنسبة لتطبيقات المكتب :

  • البعض يتماشى مع نظام واحد فقط (C#) ، حتى وإن كان يتواجد في الأنظمة الأخرى إلا أنه لايقارن باليئة الأصلية نظرا لضعف المكتبات التي تكون غالبا طورت من طرف مبرمجين متطوعين.
  • البعض يتماشى مع جميع الأنظمة (JAVA، ++C) إلا أنه يفتقر إلى سهولة التصميم حتى وإن كان هناك إجتهاد (JAVAFX،WPF)لكن لا يقارن بما تفعلة (CSS/HTML) ويتطلب تثبيت بيئة التنفيذ Runtime كبيرة الحجم.
  • البعض أصبح في عداد الموتى في رأيي إذ أنه لفعل أي شيء يجب إحضار المكتبات الخاصة به من الشركة المطورة أو يفتقر تماما لبعض الخاصيات مثل تشغيل الفيديو، طلب معلومات من الإنترنت، التحكم في قواعد البيانات NoSQL
  • كما يجب تثبيت برامج هائلة الحجم لتطوير هذه التطبيقات وإستخدام بيئات التطوير الثقيلة IDE

عند بحثي عن دورات أو مواضيع تتحدث عن هذا المجال (لغات الويب الحديثة) وجت الإنترنت غنية جدا لكن للأسف باللغة الإنجليزية فقط، أما بالعربية وغيرها فلم أجد شيئا وأظن أنه لا يوجد على الإطلاق، وهذا غريب نوعا ما، لأن الجافا سكريبت أصبحت ضمن اللغات الأولى المستخدمة عالميا لكن لا نجد عنها شيئا يذكر بالعربية فلماذا، هل لأن المطورين العرب لا يتابعون الجديد، أم أن من ينشر مثل هذه المواضيع مازال يستخدم اللغات الأصلية ؟؟؟ . ولهذا إقترحت سلسلة تقدم هذه التكنولوجيا (NodeJS + الويب المعاصر) التي تمنح المطور إمكانية الإستخدام في تطوير الخوادم، التطبيقات (MacOS/Windows/Linux)، وحتى تطبيقات الهواتف الذكية لجميع الأنظمة iOS/Android/WindowsPhone/...


تقديم النود جي أس NodeJS

النود جي أس هو عبارة عن بيئة للتنفيذ (Runtime environment) مبنية على لغة الجافا سكريبت، مفتوحة المصدر وتشتغل على أغلب أنظمة التشغيل، وتستخدم لتطوير التطبيقات، يتكون هذا النظام من وحدات أو أقسام (modules)، كما يمكن تطوير وحدات خاصة لكل مستخدم، ونجد عدد لا يحصى من الوحدات في شتى المحالات على الأنترنت والتي يسهل تثبيتها والعمل عليها مثل (md5، قواعد البيانات sqlserver/sqlite/mysql، وكذا auth، الملفات، أو أي شيء يخطر على بالك).


لماذا NodeJS

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

السرعة الفائقة : يعتمد النود جي أس على محرك الجافا سكريبت من قوقل كروم (Google Chrome's V8 JavaScript Engine) مما يجعله فائق السرعة عند تنفيذ الأوامر

تنفيذ الأوامر بالتوازي : يقوم النود جي أس بتنفيذ جميع الأوامر والطلبات (request) بالتوازي أي أنه لا يتوقف في أنتظار الرد وإنما ينتقل إلى الطلب (request) التالي.

مناسب جدا لإنشاء API : فهو يحول جميع الأشياء إلى صيغة JSON عند الرد على أي طلب (request) كما يمكن أستخدام بعض المكونات للتحكم التام في جميع أنواع الطلبات get/post/put/delete

أعتماده على مسير الحزمات npm : والذي يعتبر أكبر مسير حزمات في العالم والذي يحتوي على الآلاف أن لم يكن مئات الآلاف من المكتبات أو المكونات ويتم التحميل منه ملايين المرات في الشهر.

البساطة والسهولة : إذ يمكن إنشاء برامج جد معقدة في بضعة أسطر ونعطي مثال عن قراءة جدول من قاعدة معطيات sql server وتحويل النتيجة إلى صيغة JSON وإرسالها عبر الخادم على شكل طلب get :


عند فتح المتصفح على localhost:2500 سنرى بأنه يعطينا قائمة السلع، ونلاحظ أنه لفعل مثل هذه الأشياء في اللغات الأخرى يجب أن تكتب أسطر لا تنتهي من التعليمات لكن في النود جي أس يمكن الوصول إلى أي شيء بمنتهى السهولة (هذا مجرد مثال فقط لا يجب الإكتراث أو فهم كافة أسطر الكود)


التثبيت وإعداد البيئة :

  1. لتثبيت النود جي أس يكفي تحميله من الموقع الرسمي : https://nodejs.org/en
  2. بعد التثبيت يكون التنفيذ من موجه اﻷوامر command line أو terminal وللتحقق يجب تنفيذ اﻷمر، على لينكس والماك فهو سهل وأساسي
  3. الأن يجب إختيار المحرر لكتابة الكود، شخصيا أنا أستخدم VSCode من مايكروسوفت https://code.visualstudio.com مفتوح المصدر، صغير الحجم، يعمل على جميع الأنظمة ومبني على الجافا سكريبت ;)

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

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

أول وبعد التثبيت نجد أنه أصبح لدينا أمر جديد في نافذة الأوامر وهو npm أي (Node Package Manager) يقوم هذا الأمر بتنزيل المكتبات، تشغيل إطلاق الخادم، ...

بإستخدام الأمر npm -v 

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

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


أول برنامج على النود جي أس Hello world (السلام عليكم)

الأن يمكننا كتابة الكود في الملف app.js أي كود نريده خادم، تطبيق نصي Console أو تطبيق مكتب فلنتوكل على الله


تطبيق نصي بسيط Console :

نكتب الأمر في الملف app.js

وللتنفيذ يكفي إستخدام الأمر node زائد إسم ملف البرنامج app.js أو بإستخدام الأمر npm start لأن هذا الأخير أضفناه سابقا في الملف package.json

لنجرب برنامج أكثر تعقيدا مثلا نريد تشفير كلمة بإستخدام md5 ولهذا سنحتاج إلى تثبيت المكتبة، نقوم بذلك بإستخدام الأمر npm install md5 --save وهذا لتحميل المكتبة و نستخدم --save لإضافة المكتبة إلى ملفنا package.json نلاحظ أننا إستخدما هذه المكتبة ولم نستخدم سوى سطرين للحصول على النتيجة المرادة.


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

هنا يمكننا أن نلاحظ أننا أنشئنا خادم إنترنت في بضعة أسطر بعد التنفيذ يجب فتح المتصفح على العنوان المذكور 127.0.0.1:8000


الخاتمة :

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

إن كان هناك أي سؤال فنرجو ترك تعليق وشكرا.