دليل Node.js ، الجزء الأول: معلومات عامة والبدء

لقد بدأنا في نشر سلسلة من المواد التي هي ترجمة خطوة بخطوة للبرنامج التعليمي Node.js للمبتدئين. في هذه الحالة ، "المبتدئ" هو شخص لديه بعض المعرفة بجافا سكريبت في المتصفح. سمع أن هناك منصة خادم ، برامج مكتوبة أيضًا في JS ، ويرغب في إتقان هذه المنصة. ربما ستجد هنا شيئًا مفيدًا لنفسك حتى لو كنت على دراية بـ Node.js.

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



سنناقش اليوم ميزات Node.js ، ونبدأ التعرف على النظام البيئي لهذا النظام الأساسي ونكتب "Hello World" من جانب الخادم.


استعراض Node.js


Node.js هو مصدر تشغيل جافا سكريبت عبر الأنظمة الأساسية مفتوح المصدر يعمل على الخوادم. منذ إصدار هذه المنصة في عام 2009 ، أصبحت شائعة للغاية وتلعب اليوم دورًا مهمًا جدًا في مجال تطوير الويب. إذا كنت تفكر في عدد النجوم التي جمعها مشروع معين على GitHub كمؤشر على الشعبية ، فإن Node.js ، الذي يحتوي على أكثر من 50000 نجمة ، هو مشروع شائع جدًا.

تعتمد منصة Node.js على محرك JavaScript V8 من Google ، والذي يستخدم في متصفح Google Chrome. تستخدم هذه المنصة بشكل أساسي لإنشاء خوادم الويب ، ولكن نطاقها لا يقتصر على ذلك.

فكر في الميزات الرئيسية لـ Node.js.

▍السرعة


واحدة من الميزات الرئيسية الجذابة لـ Node.js هي السرعة. يمكن أن تكون شفرة JavaScript التي تعمل في Node.js أسرع مرتين من التعليمات البرمجية المكتوبة باللغات المترجمة مثل C أو Java ، وأوامر بحجم أسرع من اللغات المفسرة مثل Python أو Ruby. والسبب في ذلك هو بنية المنصة غير المحظورة ، وتعتمد النتائج المحددة على اختبارات الأداء المستخدمة ، ولكن بشكل عام ، تعد Node.js منصة سريعة جدًا.

impبساطة


منصة Node.js سهلة التعلم والاستخدام. في الواقع ، إنه بسيط جدًا حقًا ، ويمكن ملاحظته بشكل خاص مقارنة ببعض منصات الخادم الأخرى.

avaجافا سكريبت


يقوم Node.js بتشغيل التعليمات البرمجية المكتوبة بلغة JavaScript. وهذا يعني أن الملايين من المطورين الأماميين الذين يستخدمون جافا سكريبت بالفعل في المتصفح يمكنهم كتابة كلاً من الخادم والعميل رمز بلغة البرمجة نفسها دون الحاجة إلى تعلم أداة جديدة تمامًا للانتقال إلى تطوير الخادم.

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

محرك 8V8


في قلب Node.js ، من بين الحلول الأخرى ، محرك جافا سكريبت مفتوح المصدر من Google V8 ، والذي يستخدم في متصفح Google Chrome ومتصفحات أخرى. هذا يعني أن Node.js يستخدم إنجازات الآلاف من المهندسين الذين جعلوا JavaScript JavaScript runtime سريعًا بشكل لا يصدق ويستمرون في العمل نحو تحسين V8.

▍التزامن


في لغات البرمجة التقليدية (C و Java و Python و PHP) ، يتم حظر جميع التعليمات افتراضيًا ما لم يعتني المطور صراحة بتنفيذ التعليمات البرمجية غير المتزامنة. ونتيجة لذلك ، إذا تم ، على سبيل المثال ، في مثل هذه البيئة ، إجراء طلب شبكة لتحميل بعض كود JSON ، فسيتم تعليق تنفيذ الدفق الذي تم إجراء الطلب منه حتى يكتمل استلام الاستجابة ومعالجتها.

تبسط JavaScript بشكل كبير كتابة التعليمات البرمجية غير المتزامنة وغير المحظورة باستخدام مؤشر ترابط واحد ، ووظائف رد الاتصال (الاسترجاعات) ، ونهج التطوير القائم على الحدث. في كل مرة نحتاج فيها إلى إجراء عملية ثقيلة ، نقوم بتمرير آلية رد الاتصال المناسبة ، والتي سيتم استدعاؤها فور الانتهاء من هذه العملية. ونتيجة لذلك ، لكي يستمر البرنامج في العمل ، ليس من الضروري انتظار نتائج مثل هذه العمليات.

نشأت آلية مماثلة في المتصفحات. لا يمكننا الانتظار ، على سبيل المثال ، لاستكمال طلب AJAX ، دون التمكن من الاستجابة لإجراءات المستخدم ، على سبيل المثال ، النقر على الأزرار. من أجل تسهيل عمل المستخدمين مع صفحات الويب ، يجب أن يتم كل شيء وتنزيل البيانات من الشبكة ومعالجة النقرات على الأزرار في وقت واحد وفي الوقت الفعلي.

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

تسمح الآليات غير المتزامنة لخادم Node.js واحد بمعالجة آلاف الاتصالات في وقت واحد ، دون تحميل المبرمج بمهام لإدارة التدفقات وتنظيم تنفيذ التعليمات البرمجية المتوازية. مثل هذه الأشياء غالبًا ما تكون مصادر خطأ.

يوفر Node.js للمطور آليات الإدخال والإخراج الأساسية غير المحظورة ، وبشكل عام ، تتم كتابة المكتبات المستخدمة في إطار عمل Node.js باستخدام نماذج غير قابلة للحظر. وهذا يجعل سلوك رمز الحظر هو الاستثناء وليس القاعدة.

عندما يحتاج Node.js إلى إجراء عملية إدخال / إخراج ، مثل تنزيل البيانات من الشبكة ، أو الوصول إلى قاعدة البيانات أو نظام الملفات ، بدلاً من حظر سلسلة المحادثات الرئيسية التي تنتظر نتائج هذه العملية ، يبدأ Node.js في تنفيذها ويستمر في القيام بأشياء أخرى حتى حتى يتم استلام نتائج هذه العملية.

ibraries مكتبات


بفضل البساطة والراحة في العمل مع مدير الحزم لـ Node.js المسمى npm ، يزدهر النظام البيئي Node.js. يوجد الآن في سجل npm أكثر من نصف مليون حزمة مفتوحة المصدر يمكن لأي مطور Node.js استخدامها بحرية.
بعد فحص بعض الميزات الرئيسية لمنصة Node.js ، سنختبرها عمليًا. لنبدأ التثبيت.

قم بتثبيت Node.js


يمكن تثبيت Node.js بطرق مختلفة ، والتي سننظر فيها الآن.
لذلك ، يمكن العثور على حزم التثبيت الرسمية لجميع المنصات الرئيسية هنا .

هناك طريقة أخرى مريحة للغاية لتثبيت Node.js ، وهي استخدام مدير الحزم المتاح في نظام التشغيل. على سبيل المثال ، يسمى مدير حزم macOS ، وهو المعيار الفعلي في هذه المنطقة ، Homebrew . إذا كان موجودًا على نظامك ، فيمكنك تثبيت Node.js عن طريق تشغيل هذا الأمر في سطر الأوامر:

brew install node 

يمكن العثور على قائمة بمديري الحزم لأنظمة التشغيل الأخرى ، بما في ذلك Linux و Windows ، هنا .

مدير إصدار شهير لـ Node.js هو nvm . تتيح لك هذه الأداة التبديل بسهولة بين الإصدارات المختلفة من Node.js ، حيث يمكنك ، على سبيل المثال ، تثبيت الإصدار الجديد من Node.js وتجربته ، ثم ، إذا لزم الأمر ، العودة إلى الإصدار القديم. Nvm مفيد أيضًا في المواقف التي تحتاج فيها إلى تجربة بعض التعليمات البرمجية في الإصدار القديم من Node.js.

أنصح المبتدئين باستخدام مثبتات Node.js الرسمية. لمستخدمي macOS ، أوصي بتثبيت Node.js باستخدام Homebrew. الآن بعد أن قمت بتثبيت Node.js ، فقد حان الوقت لكتابة "Hello World".

أول تطبيق Node.js


المثال الأكثر شيوعًا للتطبيق الأول لـ Node.js هو خادم ويب بسيط. هنا هو رمزه:

 const http = require('http') const hostname = '127.0.0.1' const port = 3000 const server = http.createServer((req, res) => { res.statusCode = 200 res.setHeader('Content-Type', 'text/plain') res.end('Hello World\n') }) server.listen(port, hostname, () => { console.log(`Server running at http://${hostname}:${port}/`) }) 

لتشغيل هذا الرمز ، احفظه في ملف server.js ونفذ الأمر التالي في الجهاز الطرفي:

 node server.js 

للتحقق من الخادم ، افتح بعض المتصفح وأدخل http: http://127.0.0.1:3000 في شريط العنوان ، أي عنوان الخادم الذي سيتم عرضه في وحدة التحكم بعد تشغيله بنجاح. إذا كان كل شيء يعمل كما ينبغي ، فسيتم عرض "Hello World" على الصفحة.

دعونا نلقي نظرة على هذا المثال.

أولاً ، لاحظ أن الكود يحتوي على أمر http module connect.

منصة Node.js هي مالك مجموعة قياسية رائعة من الوحدات ، والتي تتضمن آليات متطورة جيدًا للعمل مع الشبكة.

تقوم طريقة createServer() لكائن http بإنشاء خادم HTTP جديد createServer() .

تم تكوين الخادم للاستماع على منفذ معين على مضيف معين. عندما يكون الخادم جاهزًا ، يتم استدعاء رد الاتصال المقابل ، لإعلامنا أن الخادم يعمل.

عندما يتلقى الخادم الطلب ، يتم رفع حدث request ، والذي يوفر كائنين. الأول هو الطلب ( req ، كائن http.IncomingMessage ) ، والثاني هو الاستجابة ( res ، كائن http.ServerResponse ). هم أهم آليات معالجة طلب HTTP.

يوفر الأول معلومات حول الطلب تحت تصرفنا. في مثالنا البسيط ، لا نستخدم هذه البيانات ، ولكن إذا لزم الأمر ، باستخدام كائن طلب ، يمكنك الوصول إلى رؤوس الطلبات والبيانات المرسلة فيه.

والثاني مطلوب لتكوين وإرسال رد على الطلب.

في هذه الحالة ، نشكل الرد على الطلب على النحو التالي. أولاً ، قم بتعيين خاصية statusCode إلى 200 ، والتي تشير إلى العملية الناجحة:

 res.statusCode = 200 

بعد ذلك ، نقوم بتعيين رأس Content-Type :

 res.setHeader('Content-Type', 'text/plain') 

بعد ذلك ، نكمل إعداد الرد بإضافة محتوياته كحجة إلى طريقة end() :

 res.end('Hello World\n') 

لقد قلنا بالفعل أن نظامًا بيئيًا قويًا قد تشكل حول منصة Node.js. سنناقش الآن بعض الأطر الشائعة والأدوات المساعدة لـ Node.js.

أطر وأدوات مساعدة لـ Node.js


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

  • صريح توفر هذه المكتبة للمطور أداة بسيطة للغاية ولكنها قوية لإنشاء خوادم الويب. كان مفتاح نجاح Express هو النهج البسيط والتركيز على آليات الخادم الأساسية دون محاولة فرض رؤية معينة لهندسة الخادم "الوحيدة الصحيحة".
  • نيزك يعد هذا إطار عمل قوي متكامل يقوم بتنفيذ نهج متماثل لتطوير تطبيقات JavaScript واستخدام التعليمات البرمجية على كل من العميل والخادم. بمجرد أن كان Meteor أداة مستقلة تتضمن كل ما قد يحتاجه المطور. وهي الآن متكاملة أيضًا مع مكتبات الواجهة الأمامية مثل React و Vue و Angular . يمكن أيضًا استخدام النيزك ، بالإضافة إلى تطوير تطبيقات الويب التقليدية ، في تطوير الأجهزة المحمولة.
  • كوا تم إنشاء إطار الويب هذا بواسطة نفس الفريق الذي يعمل على Express. أثناء تطويره ، والذي كان يعتمد على سنوات من الخبرة في العمل على Express ، تم الانتباه إلى بساطة الحل وضغطه. ظهر هذا المشروع كحل لمشكلة إجراء تغييرات جادة على Express لا تتوافق مع آليات الإطار الأخرى التي يمكن أن تقسم المجتمع.
  • Next.js. تم تصميم هذا الإطار لتنظيم العرض من جانب الخادم لتطبيقات التفاعل .
  • مايكرو . هذه مكتبة مضغوطة للغاية لإنشاء خدمات مصغر غير متزامنة HTTP.
  • Socket.io . هذه مكتبة لتطوير تطبيقات الشبكة في الوقت الحقيقي.

في الواقع ، في النظام البيئي Node.js ، يمكنك العثور على مكتبة مساعدة لحل أي مهمة تقريبًا. كما تعلم ، يستغرق بناء مثل هذا النظام البيئي الكثير من الوقت. ظهرت منصة Node.js في عام 2009. خلال وجودها ، حدث الكثير مما يستحق أن يعرفه المبرمج الذي يريد تعلم هذه المنصة.

تاريخ موجز لـ Node.js


Node.js يبلغ من العمر 9 سنوات هذا العام. هذا ، بالطبع ، ليس كثيرًا ، إذا قارنا هذا العمر بعمر جافا سكريبت ، الذي يبلغ بالفعل 23 عامًا ، أو بعمر الويب البالغ من العمر 25 عامًا ، الموجود في الشكل الذي نعرفه به ، إذا حسبت من مظهر متصفح الفسيفساء.

9 سنوات هي فترة قصيرة للتكنولوجيا ، ولكن يبدو الآن أن منصة Node.js كانت موجودة دائمًا.

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

الآن دعونا نتحدث عن التقنيات التي تكمن وراء Node.js وننظر بإيجاز في الأحداث الرئيسية المتعلقة بهذه المنصة.

لذا ، فإن JavaScript هي لغة برمجة تم إنشاؤها في Netscape كلغة نصية مصممة لإدارة صفحات الويب في متصفح Netscape Navigator .

كان جزء من عمل Netscape هو بيع خوادم الويب ، والتي تضمنت بيئة تسمى Netscape LiveWire. سمح لك بإنشاء صفحات ويب ديناميكية باستخدام جافا سكريبت من جانب الخادم. كما ترون ، فإن فكرة استخدام JS لتطوير الخادم أقدم بكثير من Node.js. هذه الفكرة قديمة قدم جافا سكريبت نفسها ، ولكن لم يكتسب JS من جانب الخادم شعبية في الأوقات المعنية.

أحد العوامل الرئيسية التي أصبحت بسببها منصة Node.js واسعة الانتشار وشائعة هو وقت ظهورها. لذلك ، قبل ذلك ببضع سنوات ، بدأ اعتبار جافا سكريبت لغة جادة. حدث هذا بفضل تطبيقات Web 2.0 ، مثل خرائط Google أو Gmail ، والتي أظهرت للعالم إمكانات تقنيات الويب الحديثة.

بفضل حرب المتصفح التنافسية ، التي استمرت حتى يومنا هذا ، زاد أداء محركات JavaScript بشكل خطير. تعمل فرق التطوير وراء المتصفحات الرئيسية كل يوم لتحسين أداء حلولها ، والتي لها تأثير مفيد على جافا سكريبت بشكل عام. أحد هذه المحركات هو محرك V8 المذكور بالفعل ، والمستخدم في متصفح Chrome والمستخدم في Node.js. وهي واحدة من نتائج رغبة مطوري المتصفح للحصول على كود JS عالي الأداء.

بالطبع ، لا تعتمد شعبية Node.js على مزيج ناجح من الظروف فقط وعلى حقيقة أن هذه المنصة ظهرت في الوقت المناسب. عرضت العالم على نهج مبتكر لتطوير جانب الخادم في جافا سكريبت. خذ بعين الاعتبار المعالم في تاريخ Node.js.

▍2009


  • ظهور Node.js
  • إنشاء خيار npm الأول.

▍2010



▍2011


  • إنهاء npm 1.0.
  • بدأت الشركات الكبرى مثل LinkedIn و Uber في استخدام Node.js.

▍2012


  • الارتفاع السريع في شعبية Node.js.

▍2013


  • ظهور Ghost ، أول منصة نشر رئيسية تستخدم Node.js.
  • الافراج عن الكوا .

▍2014


  • وقعت أحداث درامية هذا العام. ظهر مشروع IO.js ، وهو شوكة من Node.js ، كان الغرض منها ، من بين أمور أخرى ، تقديم دعم ES6 وتسريع تطوير النظام الأساسي.

▍2015


  • تأسيس مؤسسة Node.js.
  • دمج IO.js و Node.js.
  • في npm هناك فرصة للعمل مع الوحدات الخاصة.
  • إخراج Node.js 4 (تجدر الإشارة إلى أن هذا النظام الأساسي لم يكن لديه الإصدارات 1 و 2 و 3).

▍2016



▍2017


  • بدأت Npm في التركيز بشكل أكبر على الأمن.
  • عقدة الإخراج. js 8
  • ظهور دعم HTTP / 2 .
  • تم التعرف على V8 رسميًا كمحرك JS مصمم ليس فقط لـ Chrome ، ولكن أيضًا للعقدة.
  • يتم تنفيذ 3 مليارات عملية تنزيل من npm أسبوعيًا.

▍2018



الملخص


اليوم تعرفت على منصة Node.js ، واكتشفت تركيبها ، وكتبت واختبرت أول تطبيق بسيط. في المرة القادمة سنتحدث عن مقدار المعرفة بجافا سكريبت التي تحتاج إلى تطويرها بنجاح لـ Node.js ، وكيفية اختلاف شفرة JS من المتصفح والخادم ، ومناقشة بعض حيل تطوير Node.js.

أعزائي القراء! أخبرني ، هل بدأت Hello World لـ Node.js؟

الأجزاء التالية من الدليل:
الجزء الأول: معلومات عامة والبدء
الجزء 2: JavaScript ، V8 ، بعض حيل التطوير
الجزء 3: الاستضافة ، REPL ، العمل مع وحدة التحكم ، الوحدات النمطية
الجزء 4: ملفات npm و package.json و package-lock.json
الجزء 5: npm و npx
الجزء 6: حلقة الحدث ، مكدس الاتصال ، المؤقتات
الجزء 7: البرمجة غير المتزامنة

Source: https://habr.com/ru/post/ar422893/


All Articles