دليل Node.js ، الجزء 3: الاستضافة ، REPL ، عمليات وحدة التحكم ، الوحدات النمطية

هنا هو الجزء الثالث من ترجمة دليل Node.js. سنتحدث اليوم عن اختيار استضافة لمشاريع Node.js ، وكيفية العمل مع Node.js في وضع REPL ، وكيفية تشغيل البرامج النصية بالحجج ، وكيفية التفاعل مع وحدة التحكم والوحدات النمطية.




استضافة تطبيقات Node.js


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

hosting أسهل خيار استضافة: نفق محلي


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

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

هناك خدمة جيدة للغاية لتنظيم الأنفاق المحلية ، ngrok ، المتاحة للعديد من المنصات.

باستخدام ngrok ، يكفي تنفيذ أمر من النموذج ngrok PORT وسيتم الوصول إلى المنفذ الذي حددته من الإنترنت. في نفس الوقت ، إذا كنت تستخدم الإصدار المجاني من الخدمة ، فسيكون لديك عنوان في نطاق ngrok.io . إذا قررت الحصول على اشتراك مدفوع ، يمكنك استخدام أسماء المجالات الخاصة بك ، بالإضافة إلى ذلك ، يمكنك زيادة أمان الحل (باستخدام ngrok ، يمكنك فتح الوصول إلى جهاز الكمبيوتر الخاص بك في جميع أنحاء الإنترنت).

أداة أخرى يمكن استخدامها لتنظيم الأنفاق المحلية تسمى localtunnel .

nبيئات نشر مشاريع Node.js التي لا تتطلب التكوين


خلل


Glitch عبارة عن بيئة ومنصة تفاعلية لتطوير سريع للتطبيقات تسمح لك بنشرها في نطاقات glitch.com الفرعية. لا تدعم هذه المنصة حتى الآن نطاقات المستخدمين الخاصة بها ، وهناك بعض القيود عند العمل معها ، ولكنها رائعة للعمل على النماذج الأولية للتطبيق. يبدو تصميم Glitch مضحكًا جدًا (ربما يمكن كتابة هذا في مزايا هذه المنصة) ، ولكن هذه ليست نوعًا من بيئة "لعبة" محدودة للغاية. هنا لديك الفرصة للعمل مع Node.js ، CDN ، مستودع آمن للمعلومات السرية ، والقدرة على تبادل البيانات مع GitHub وأكثر من ذلك بكثير.

يتم تشغيل مشروع Glitch من قبل نفس الشركة خلف FogBugz و Trello (أحد مبدعي StackOverflow). غالبًا ما أستخدم هذا النظام الأساسي لعرض التطبيقات.

Codepen


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

vironments بيئات بدون خادم


تتيح لك الأنظمة الأساسية بدون خادم نشر التطبيقات دون التفكير تمامًا في الخوادم أو في إعدادها أو في إدارتها. نموذج الحوسبة بدون خادم هو أن التطبيقات تنشر كوظائف تستجيب للمكالمات إلى نقطة نهاية الشبكة. يُطلق أيضًا على أسلوب مشابه لنشر التطبيق FAAS (الوظائف كخدمة ، تعمل كخدمة).

إليك بعض الحلول الشائعة في هذا المجال:


يوفر كلا هذين المشروعين للمطور مستوى معين من التجريد ، مما يسمح بنشر التطبيقات على منصات FAAS المختلفة ، على سبيل المثال ، Amazon AWS Lambda و Microsoft Azure و Google Cloud.

حلول ▍PAAS


PAAS (النظام الأساسي كخدمة ، النظام الأساسي كخدمة) هي منصات تهتم بالعديد من الأشياء التي ، في الظروف العادية ، يجب أن يعتني بها المطور الذي ينشر التطبيق.

زيت الآن


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

Nanobox


أطلق مبدعو منصة Nanobox ، والتي تتضمن نشر تطبيقات Node.js ، اسم PAAS V2.

هيروكو


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

مايكروسوفت أزور


Azure هي منصة سحابية من Microsoft. تحتوي وثائقها على قسم في تطبيقات Node.js.

Google Cloud Platform


Google Cloud هي بيئة رائعة لنشر تطبيقات Node.js. هنا هو الجزء ذو الصلة من وثائقها.

استضافة ▍VPS


هناك العديد من المنصات التي تقدم خدمات استضافة VPS . السمة المشتركة لهذه الأنظمة الأساسية هي حقيقة أن المطور لديه تحت تصرفه خادمًا افتراضيًا ، يقوم بتثبيت نظام تشغيل (Linux أو Windows) بشكل مستقل عليه ، وينشر التطبيقات بشكل مستقل.

من بين المنصات التي تقدم خدمات VPS ، والتي يوجد منها الكثير ، يمكننا ملاحظة ما يلي ، والذي استخدمته والذي يمكنني أن أوصي به للآخرين:


بمفردنا ، نضيف أن RUVDS يوفر أيضًا خدمات استضافة VPS. نحن مرخصون من قبل FSTEC ، عملائنا مؤمنون من قبل AIG ، ولدينا أربعة مراكز بيانات في بلدان مختلفة. يوجد مركز البيانات الخاص بها RUCLOUD TIER 3 في مدينة Korolev ، منطقة موسكو ، بالإضافة إلى مناطق الضغط في مراكز البيانات Deltalis (سويسرا) ، London Equinix LD8 (بريطانيا العظمى) ، و MMTS-9 (موسكو ، روسيا). تفي جميع مناطق الاحتواء بمستوى موثوقية لا يقل عن المستوى 3.

شركاء الشركة هم FINAM JSC ، مجموعة BCS المالية ، وديعة التسوية الوطنية (بورصة موسكو) ، VTsIOM JSC ، شركة Gars-Telecom ، مشغل سيارات الأجرة Gett ، مشغل توصيل Club Delivery وغيرها الكثير.


serverالخادم العادي


حل استضافة آخر هو شراء (أو تأجير ، على سبيل المثال ، باستخدام خدمة Vultr Bare Metal ) خادمًا عاديًا ، وتثبيت Linux وبرامج أخرى عليه ، وتوصيله بالإنترنت واستضافة تطبيقات Node.js عليه.

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

باستخدام Node.js في وضع REPL


يشير اختصار REPL إلى حلقة القراءة - التقييم - الطباعة - الحلقة (دورة "اقرأ - احسب - خرج"). يعد استخدام REPL طريقة رائعة لاستكشاف قدرات Node.js. بسرعة

كما تعلم بالفعل ، يتم استخدام أمر node لتشغيل البرامج النصية في Node.js ، يبدو كما يلي:

 node script.js 

إذا قمت بإدخال الأمر نفسه ، ولكن لم تحدد اسم ملف ، فسيتم تشغيل Node.js في وضع REPL:

 node 

إذا حاولت الآن إدخال مثل هذا الأمر في المحطة الطرفية الخاصة بك ، فسوف ترى نتيجة لذلك ما يلي:

 > node > 

Node.js الآن في وضع الاستعداد. يتوقع النظام منا إدخال بعض تعليمات JavaScript في سطر الأوامر التي سيتم تنفيذها.

للبدء ، لنجرب شيئًا بسيطًا جدًا:

 > console.log('test') test undefined > 

اقترحنا هنا Node.js لتنفيذ الأمر المستخدم لإخراج البيانات إلى وحدة التحكم. القيمة الأولى ، test ، هي ما console.log('test') . القيمة الثانية ، undefined ، هي ما console.log() الدالة console.log() .

بعد اكتمال الأمر ، تظهر مطالبة REPL ، مما يعني أنه يمكننا إدخال أمر جديد هنا.

أوامر كاملة ompl باستخدام مفتاح Tab


REPL بيئة تفاعلية. إذا قمت بالضغط على مفتاح Tab على لوحة المفاتيح أثناء كتابة الرمز ، فستحاول REPL إكمال الإدخال تلقائيًا عن طريق تحديد ، على سبيل المثال ، اسم مناسب للمتغير الذي أعلنته بالفعل أو اسم كائن قياسي.

▍استكشاف كائنات JavaScript


أدخل اسم بعض عناصر JavaScript القياسية في سطر الأوامر ، على سبيل المثال ، Number ، أضف نقطة بعدها واضغط على Tab .

يسرد REPL خصائص وأساليب الكائن التي يمكن للمطور التفاعل معها:


فحص كائن الرقم

▍استكشاف الكائنات العالمية


لمعرفة كائنات Node.js العمومية التي يمكنك العمل معها ، أدخل الأمر global. في الطرفية global. واضغط على Tab .


أبحاث الكائنات العالمية

▍ متغير خاص _


يخزن المتغير _ (الشرطة السفلية) نتيجة آخر عملية تم إجراؤها. يمكن استخدام هذا المتغير كجزء من الأوامر التي تم إدخالها في وحدة التحكم.

▍ أوامر تبدأ بنقطة


في وضع REPL ، يمكنك استخدام بعض الأوامر الخاصة التي تبدأ بنقطة. ها هم:

  • يعرض الأمر .help معلومات مرجعية للأوامر التي تبدأ .help .
  • .editor الأمر .editor النظام في وضع المحرر ، مما يجعل من السهل إدخال رمز JavaScript متعدد الأسطر. بعد أن تكون في هذا الوضع ، تقوم بإدخال كل ما تريد ، لتشغيل التعليمات البرمجية ، استخدم الأمر Ctrl+D
  • يتيح .break الأمر .break إحباط إدخال تعبير متعدد الأسطر. يشبه استخدامه اختصار لوحة المفاتيح Ctrl+C
  • .clear الأمر .clear سياق REPL ويقاطع أيضًا إدخال تعبير متعدد الأسطر.
  • يقوم الأمر .load بتحميل التعليمات البرمجية من ملف JavaScript في الجلسة الحالية.
  • يحفظ الأمر .save كل ما تم إدخاله أثناء جلسة REPL إلى الملف.
  • يتيح .exit الأمر .exit الخروج من جلسة REPL ؛ حيث يعمل تمامًا مثل .exit مفاتيح متتاليتين لمجموعة المفاتيح Ctrl+C

وتجدر الإشارة إلى أن REPL يتعرف على إدخال التعبيرات متعددة الأسطر حتى بدون استخدام .editor .

على سبيل المثال ، بدأنا في إدخال رمز التكرار:

 [1, 2, 3].forEach(num => { 

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

 ... console.log(num) ... }) 

يؤدي الضغط على Enter بعد إدخال القوس الأخير إلى تنفيذ التعبير. إذا قمت بإدخال .break في هذا الوضع ، فسيتم إلغاء الإدخال ولن يتم تنفيذ التعبير.

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

العمل مع وسيطات سطر الأوامر في البرامج النصية Node.js


عند تشغيل البرامج النصية Node.js ، يمكن تمرير الوسيطات إليهم. إليك مكالمة نصية عادية:

 node app.js 

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

 node app.js flavio 

في الثانية - مثل هذا:

 node app.js name=flavio 

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

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

يحتوي العنصر الأول من صفيف argv على المسار الكامل للملف الذي يتم تنفيذه عند إدخال أمر node في سطر الأوامر.

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

تحتوي جميع عناصر المصفوفة الأخرى ، بدءًا من الثالث ، على ما تم تمريره إلى البرنامج النصي عند تشغيله.

يمكن تنظيم تعداد الوسيطات المتاحة في argv (يتضمن هذا المسار إلى node ومسار الملف التنفيذي للبرنامج النصي) باستخدام حلقة forEach :

 process.argv.forEach((val, index) => { console.log(`${index}: ${val}`) }) 

إذا لم تكن مهتمًا argv الأوليين ، argv على argv يمكنك إنشاء مصفوفة جديدة تتضمن كل شيء من argv باستثناء أول عنصرين:

 const args = process.argv.slice(2) 

لنفترض ، عند تشغيل برنامج نصي ، تم تمرير وسيطة واحدة فقط له ، في شكل قيمة مستقلة:

 node app.js flavio 

يمكنك الوصول إلى هذه الحجة مثل هذا:

 const args = process.argv.slice(2) args[0] 

الآن دعنا نحاول استخدام بناء نوع القيمة الرئيسية:

 node app.js name=flavio 

بهذه الطريقة ، بعد تكوين مصفوفة args ، name=flavio السلسلة name=flavio في args[0] . قبل استخدام الوسيطة ، يجب تحليل هذه السلسلة. الطريقة الأكثر ملاءمة للقيام بذلك هي استخدام مكتبة الحد الأدنى ، المصممة لتسهيل العمل مع حجج سطر الأوامر:

 const args = require('minimist')(process.argv.slice(2)) args['name'] //flavio 

الآن خذ بعين الاعتبار الإخراج إلى وحدة التحكم.

إخراج البيانات إلى وحدة التحكم باستخدام وحدة التحكم


توفر وحدة وحدة التحكم Node.js القياسية للمطور الكثير من الفرص للتفاعل مع سطر الأوامر أثناء تنفيذ البرنامج. بشكل عام ، هذا هو نفس كائن console المستخدم في JavaScript المستند إلى المستعرض. ولعل الطريقة الأبسط والأكثر استخدامًا console هي console.log() ، والتي تُستخدم لإخراج بيانات السلسلة إلى وحدة التحكم. علاوة على ذلك ، إذا قمت بتمرير كائن إليه ، فإنه ، قبل الإخراج ، سيتم تحويله إلى تمثيل السلسلة.

يمكن تمرير الأسلوب console.log() بعدة قيم:

 const x = 'x' const y = 'y' console.log(x, y) 

بعد تنفيذ هذا التسلسل من التعليمات ، ستصل قيمة x وقيمة y إلى وحدة التحكم.

لتكوين سلاسل معقدة ، يدعم الأمر console.log() استخدام أحرف البدل ، التي يتم استبدالها عند إخراج البيانات بقيمها المقابلة بترتيب الأولوية.

على سبيل المثال ، هذا هو الأمر الذي يعرض النص My cat has 2 years :

 console.log('My %s has %d years', 'cat', 2) 

ضع في اعتبارك ميزات أحرف البدل:

  • تنسيق %s القيمة كسلسلة.
  • %d أو %i تنسيق القيمة كعدد صحيح.
  • %f بتنسيق القيمة كرقم عائم.
  • %O استخدام %O لعرض تمثيلات السلسلة للكائنات.

فيما يلي مثال آخر على استخدام أحرف البدل:

 console.log('%O', Number) 

▍تنظيف وحدة التحكم


لمسح وحدة التحكم ، استخدم الأمر console.clear() (قد يختلف سلوكها في الأجهزة الطرفية المختلفة).

Elementsحساب العناصر


الآن console.count() نظرة على طريقة console.count() المفيدة. ألق نظرة على هذا الرمز:

 const x = 1 const y = 2 const z = 3 console.count( 'The value of x is ' + x + ' and has been checked .. how many times?' ) console.count( 'The value of x is ' + x + ' and has been checked .. how many times?' ) console.count( 'The value of y is ' + y + ' and has been checked .. how many times?' ) 

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

 const oranges = ['orange', 'orange'] const apples = ['just one apple'] oranges.forEach(fruit => { console.count(fruit) }) apples.forEach(fruit => { console.count(fruit) }) 

results عرض نتائج تتبع المكدس إلى وحدة التحكم


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

 console.trace() 

هنا مثال على استخدامه:

 const function2 = () => console.trace() const function1 = () => function2() function1() 

إليك ما حدث عندما قمت بتشغيل هذا الرمز في وضع REPL:

 Trace   at function2 (repl:1:33)   at function1 (repl:1:25)   at repl:1:1   at ContextifyScript.Script.runInThisContext (vm.js:44:33)   at REPLServer.defaultEval (repl.js:239:29)   at bound (domain.js:301:14)   at REPLServer.runBound [as eval] (domain.js:314:12)   at REPLServer.onLine (repl.js:440:10)   at emitOne (events.js:120:20)   at REPLServer.emit (events.js:210:7) 

▍ قياس الوقت المستغرق لإكمال الإجراء


يمكنك قياس الوقت الذي تستغرقه ، على سبيل المثال ، لتنفيذ وظيفة ، باستخدام console.time() و console.timeEnd() . يبدو هذا:

 const doSomething = () => console.log('test') const measureDoingSomething = () => { console.time('doSomething()') //    ,     doSomething() console.timeEnd('doSomething()') } measureDoingSomething() 

with العمل مع stdout و stderr


كما رأينا ، يعد أمر console.log() رائعًا لإخراج الرسائل إلى وحدة التحكم. عند استخدامه ، يتم استخدام ما يسمى دفق الإخراج القياسي ، أو stdout .

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

color استخدام اللون عند إخراج البيانات إلى وحدة التحكم


لتلوين النصوص المعروضة في وحدة التحكم ، يمكنك استخدام تسلسلات الهروب التي تحدد الألوان:

 console.log('\x1b[33m%s\x1b[0m', 'hi!') 

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

لتثبيته من npm ، استخدم الأمر التالي:

 npm install chalk 

يمكنك استخدامه مثل هذا:

 const chalk = require('chalk') console.log(chalk.yellow('hi!')) 

يعد استخدام الأمر chalk.yellow() أكثر ملاءمة من تسلسلات الهروب ، كما أن قراءة نص البرنامج بهذا الأسلوب أسهل كثيرًا في القراءة.

لمعرفة المزيد عن الطباشير ، تحقق من صفحة المكتبة هذه على GitHub.

▍إنشاء شريط تقدم


قد يكون شريط التقدم مفيدًا في المواقف المختلفة. يمكنك استخدام حزمة التقدم لإنشاء مؤشرات تقدم تعمل في وحدة التحكم. يمكنك تثبيته على النحو التالي:

 npm install progress 

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

 const ProgressBar = require('progress') const bar = new ProgressBar(':bar', { total: 10 }) const timer = setInterval(() => { bar.tick() if (bar.complete) {   clearInterval(timer) } }, 100) 

▍استلام مدخلات المستخدم من سطر الأوامر


كيفية جعل تطبيقات سطر الأوامر المكتوبة لمنصة Node.js تفاعلية؟ بدءًا من الإصدار 7 ، يحتوي Node.js على وحدة قراءة نمطية تسمح لك بتلقي البيانات من التدفقات التي يمكن قراءتها ، على سبيل المثال ، من process.stdin . هذا الخيط ، أثناء تنفيذ برنامج Node.js ، هو ما يتم إدخاله في المحطة. يتم إدخال البيانات سطر واحد في كل مرة.

خذ بعين الاعتبار مقتطف الرمز التالي:

 const readline = require('readline').createInterface({ input: process.stdin, output: process.stdout }) readline.question(`What's your name?`, (name) => { console.log(`Hi ${name}!`) readline.close() }) 

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

تعرض طريقة question() ما يتم تمريره إليه كمعلمة أولى (أي السؤال الذي يطرح على المستخدم) وينتظر اكتمال الإدخال. بعد الضغط على Enter فإنه يستدعي رد الاتصال الذي تم تمريره إليه في المعلمة الثانية ويعالج ما تم إدخاله. في نفس رد الاتصال ، نغلق واجهة readline .

readline , , .

, , , , , , — * .

, readline-sync , , readline , .

, . inquirer . :

 npm install inquirer 

:

 const inquirer = require('inquirer') var questions = [{ type: 'input', name: 'name', message: "What's your name?", }] inquirer.prompt(questions).then(answers => { console.log(`Hi ${answers['name']}!`) }) 

inquirer . , .

Node.js. readline , readline-sync inquirer. , , .

Node.js, exports


, API module.exports , . Node.js , . , require , :

 const library = require('./library') 

library.js , , , .

, , - , . , , . , API module.exports , .

.

module.exports , , . :

 const car = { brand: 'Ford', model: 'Fiesta' } module.exports = car //..   const car = require('./car') 

, exports . , , — :

 const car = { brand: 'Ford', model: 'Fiesta' } exports.car = car 

:

 exports.car = { brand: 'Ford', model: 'Fiesta' } 

, , :

 const items = require('./items') items.car 

:

 const car = require('./items').car 

module.exports exports ?

, module.exports . .


Node.js-, REPL, , Node.js. npm, , , package.json package-lock.json .

أعزائي القراء! Node.js-?

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


All Articles