ما هو Node.js حقًا؟



Node.js هو وقت تشغيل JavaScript. ماذا يعني هذا وكيف يعمل؟
تتضمن بيئة Node.js كل ما تحتاجه لتشغيل برنامج مكتوب بلغة JavaScript.

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

يمكنك الآن القيام بأكثر من JavaScript من مجرد مواقع تفاعلية.

جافا سكريبت الآن لديها القدرة على القيام بما يمكن أن تفعله لغات البرمجة النصية الأخرى ، مثل Python.

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

لماذا Node.js؟


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

لقد ناقشنا بالفعل السطر الأول من هذا التعريف: "Node.js هو وقت تشغيل JavaScript يعتمد على محرك JavaScript V8 من Chrome." الآن دعونا نلقي نظرة على الخطين الآخرين ، حتى نتمكن من فهم سبب شهرة Node.js.

يشير الإدخال / الإخراج إلى الإدخال / الإخراج. يمكن أن يكون أي شيء: من قراءة / كتابة الملفات المحلية إلى طلب HTTP في API. يستغرق الإدخال / الإخراج بعض الوقت وبالتالي يمنع الوظائف الأخرى.

ضع في اعتبارك سيناريو نطلب فيه user1 و user2 من الواجهة الخلفية ، ثم نطبعهما على الشاشة / في وحدة التحكم. يستغرق الرد على هذا الطلب وقتًا ، ولكن يمكن تنفيذ كل من طلبات بيانات المستخدم بشكل مستقل وفي نفس الوقت.



منع المدخلات والمخرجات


في طريقة القفل ، لا يتم تشغيل طلب بيانات المستخدم 2 حتى تتم طباعة بيانات المستخدم 1 على الشاشة.

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

الإدخال / الإخراج غير المحظور


من ناحية أخرى ، باستخدام طلب غير قابل للحظر ، يمكنك بدء طلب بيانات للمستخدم 2 دون انتظار استجابة لطلب المستخدم 1. يمكنك بدء كلا الطلبين بالتوازي.

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

حلقة حدث JavaScript


إذا كان لديك 26 دقيقة ، فراجع شرح فيديو Node Event Loop الممتاز:



إذا لم يكن الأمر كذلك ، فإليك شرح خطوة بخطوة لكيفية عمل حلقة الأحداث في JavaScript:



1. إرسال main () إلى مكدس المكالمة.

2. أرسل console.log () إلى مكدس المكالمات. يبدأ على الفور ويظهر.

3. أرسل setTimeout (2000) إلى المكدس. setTimeout (2000) هو Node API. عندما نسميها ، نسجل زوج حدث رد الاتصال. سينتظر الحدث 2000 مللي ثانية ، ثم استدعاء رد الاتصال.

4. بعد التسجيل ، يظهر setTimeout (2000) في مكدس الاستدعاءات.

5. الآن يتم تسجيل setTimeout (0) الثاني بنفس الطريقة. لدينا الآن اثنين من واجهات برمجة تطبيقات العقدة في انتظار التنفيذ.

6. بعد الانتظار 0 ثانية ، ينتقل setTimeout (0) إلى قائمة انتظار الاستدعاء ، ويحدث نفس الشيء مع setTimeout (2000).

7. في قائمة انتظار تنفيذ رد الاتصال ، تنتظر الدالات أن يكون مكدس الاستدعاءات فارغًا ، لأنه يمكن تنفيذ وظيفة واحدة فقط في كل مرة. يوفر هذا حلقة حدث.

8. يتم استدعاء آخر console.log () ، ويتم استدعاء main () من مكدس الاستدعاءات.

9. ترى حلقة الحدث أن مكدس المكالمة فارغ ، ولكن قائمة انتظار الاستدعاء ليست كذلك. وبالتالي ، فإنه ينقل الاسترجاعات (بالترتيب) إلى مكدس الاستدعاء ليتم تنفيذه.

Npm



هذه مكتبات المجتمع. سيحلون معظم المشاكل الشائعة. يحتوي npm (Node Package Manager) على الحزم التي يمكنك استخدامها في تطبيقاتك لجعل تطويرك أسرع وأكثر كفاءة.

تطلب


يتطلب ثلاث وظائف:

يقوم بتحميل الوحدات المزودة مع Node.js ، على سبيل المثال ، من نظام الملفات أو HTTP ، من Node.js API.
تحميل مكتبات الجهات الخارجية مثل Express و Mongoose التي تقوم بتثبيتها من npm.
يسمح لك بإنشاء ملفاتك الخاصة وتقسيم المشروع إلى وحدات.
Require هي وظيفة ، وهي تأخذ معلمة مسار وتُرجع الوحدة النمطية exports.

وحدات العقدة


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

يمكنك كتابة الوحدات الخاصة بك واستخدامها في تطبيقات مختلفة. يحتوي Node.js على مجموعة من الوحدات المضمنة التي يمكنك استخدامها بدون تثبيت خاص.

V8 يسرع جافا سكريبت باستخدام C ++


V8 هو محرك مفتوح المصدر مكتوب بلغة C ++.

JavaScript -> V8 (C ++) -> رمز الجهاز

يطبق V8 ECMAScript كما هو محدد في ECMA-262. تم إنشاء ECMAScript بواسطة Ecma International لتوحيد JavaScript.

يمكن أن يعمل V8 بشكل مستقل أو يمكن دمجه في أي تطبيق C ++. بفضل هذا ، يمكنك كتابة كود C ++ الخاص بك ، وجعله متاحًا لـ JavaScript.

الأحداث


الأحداث هي كل ما حدث في طلبنا وما يمكننا الإجابة عليه.

تحتوي العقدة على نوعين من الأحداث:

  • أحداث النظام: نواة C ++ من مكتبة libuv. (على سبيل المثال ، إنهاء قراءة ملف).
  • الأحداث المخصصة: JavaScript core.


كتابة Hello World في Node.js


لما لا؟

قم بإنشاء ملف app.js وقم بإضافة ما يلي إليه.

console.log ("Hello World!");

افتح الوحدة الطرفية للعقدة ، وقم بتغيير الدليل إلى المجلد الذي تم حفظ الملف فيه ، وقم بتشغيل app.js.

فويلا - لقد كتبت للتو "Hello World" في Node.js.

هناك الكثير من الموارد التي يمكنك استخدامها لمعرفة المزيد عن Node.js ، بما في ذلك freeCodeCamp.org.

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


All Articles