في الدروس السابقة،
تعلمنا عن عقدة.
لقد رأينا أيضا كيف يمكن استخدام عقدة لإعداد خادم ويب.
الآن مصممو العقدة أبقوا عمدا عقدة صغيرة مع عدد قليل من
وحدات التعليمات البرمجية بحيث يتمكنوا من ترك الأمر
للمطورين من طرف ثالث للتوصل إلى حلول مبتكرة للمشاكل.
لذلك بمجرد إصدار Node، بدأ عدد من مطوري الطرف الثالث في تصميم
وإطلاق وحدات خارجية مثيرة للاهتمام يمكن تشغيلها على رأس منصة Node.
الآن كنت قد رأيت عددا من وحدات عقدة التي يمكن
استخدامها لتطوير الواجهة الأمامية في الدورات السابقة.
الآن في هذه الدورة نحن نبحث في تطوير من جانب الخادم وعلى جانب الخادم،
واحدة من وحدات عقدة الطرف الثالث الأكثر شعبية أو
أطر لبناء خوادم HTTP هو Express.
دعونا ننظر إلى بعض تفاصيل Express في
هذه المحاضرة وبعد ذلك سوف نستفيد من Express
لبناء خادم يخدم واجهة برمجة تطبيقات REST طوال بقية هذه الدورة.
أولاً، ما هو Express؟
Express هو
إطار سريع، غير مؤكد، الحد الأدنى الذي يعمل على رأس Node.js ويدعم تطوير الويب.
هذا هو التعريف الذي اقترضت من expressjs.com،
الموقع الذي تتوفر فيه وثائق Express ذات الصلة بالنسبة لنا.
الآن إكسبريس يسمح لك لتطوير تطبيق ويب، تطبيق من
جانب الخادم التي سوف تخدم المحتوى للاستهلاك من قبل الواجهة الأمامية لدينا.
يوفر Express مجموعة قوية من الميزات التي سنقوم باستكشافها
بمزيد من التفصيل من خلال بقية الدروس في هذه الدورة.
التعبير عن نفسه كما قلت هو إطار الحد الأدنى،
ويوفر Express أيضا وسيلة لتوسيع وإضافة
وظائف إلى Express من خلال البرامج الوسيطة لطرف ثالث.
هذا يمتد وظائف Express ويضيف في المزيد من الميزات كما هو مطلوب.
لذلك، يمكنك إنشاء خادم الويب الخاص بك باستخدام العديد من البرامج الوسيطة التابعة
لجهة خارجية كما هو مطلوب لتلبية احتياجات خادم الويب الخاص بك الذي تقوم بتصميمه.
سنلقي نظرة على بعض الأمثلة على البرامج الوسيطة لطرف ثالث في هذا الدرس،
وسوف نستكشف أيضًا المزيد من هذه الأمثلة أثناء خضوعنا لبقية الدروس في هذا المساق.
لاستخدام Express في مشروعك، بطبيعة الحال، فإن
الخطوة الأولى هي تثبيت Express وبما أن Express عبارة عن وحدة نمطية،
فإننا نقوم بتثبيته بقول npm install express - save
وهذا من شأنه تثبيت Express في مشروعك المحلي.
سنرى استخدام هذا في التمرين الذي يتبع هذه المحاضرة.
دعونا نتحدث بإيجاز عن الوسيطة Express.
فما هو بالضبط الغرض من الوسيطة؟
توفر البرامج الوسيطة التي يدعمها Express الكثير من
وظائف المكونات الإضافية التي سيتم استخدامها لتحسين تطبيق Express الخاص بك،
وظائف المكونات الإضافية مثل على سبيل المثال
، سننظر إلى برنامج وسيط يسمى Morgan والذي يسمح لك
بطباعة معلومات السجل إلى الشاشة حول الطلبات التي تأتي إلى الخادم الخاص بك.
وبالمثل، سنلقي نظرة على برنامج وسيط آخر يسمى BodyParser،
والذي يسمح لك لتحليل نص
رسالة طلب HTTP الواردة واستخراج
المعلومات منه للاستخدام داخل تطبيق Express الخاص بك.
سنرى استخدام هذه في التمرين التالي.
كما ذكرت، مورغان يقوم بتسجيل المعلومات إلى وحدة التحكم على جانب الخادم،
ومعلومات حول الطلبات الواردة.
وبالمثل، يمكن أن تخدم موارد الويب الثابتة من خادمنا باستخدام Express
static بحيث يخدم هذا المعلومات من مجلد داخل مشروع Express الخاص بنا،
وفي الإعلان عن المشروع يمكنك أن تقول أنني
اسم ملف تسطير سفلي مزدوج واسم دليل تسطير سفلي مزدوج أو dirname الذي
المسار الكامل للملف أو الدليل
للوحدة الحالية وسوف تراني باستخدام ذلك في التمرين.
الآن بعد أن فهمنا قليلاً عن
Express والبرامج الوسيطة التي يستخدمها Express،
دعنا ننظر إلى وحدة Node
لأن هذه هي المرة الأولى التي نواجه فيها وحدات عقدة تابعة لجهة خارجية،
سنلقي نظرة على بعض التفاصيل حول وحدات Node الخاصة بالطرف الثالث، لذا إذا قمنا بفحص
package.json لمعرفة ما هو موجود في ملف package.json،
سننظر أيضًا في إصدار الدلالي.
لذلك عند تحديد إصدار الحزمة التي تستخدمها،
تقوم دائمًا بتحديد الإصدار عن طريق تحديد الإصدار الرئيسي. Minor الإصدار.
لذلك عند تثبيت حزمة،
يتم تحديدها دائمًا بواسطة هذه الأرقام الثلاثة،
الإصدار الرئيسي الذي قد يقدم تغييرات مفككة مما يعني أنه إذا كنت تقوم
بتثبيت إصدار أحدث من الحزمة، فقد لا يكون
متوافقًا تمامًا مع الإصدارات السابقة.
قد يقدم تغييرات كسر حيث قد تحتاج إلى العودة وإصلاح
الشفرة التي قد تكون قد كتبتها في الإصدار السابق من مشروعك.
يقدم الإصدار الثانوي
بعض التغييرات الطفيفة على الحزمة الخاصة بك وقد لا يؤدي إلى كسر التغييرات.
التصحيح سيكون إصلاح الأخطاء التي غالبا ما يتم إصدارها ثم يتم اكتشاف علة صغيرة.
لذلك لا تؤدي التصحيحات عادةً إلى أي تغييرات متفرقة
، وبالتالي يمكنك بسهولة استخدام إصدار أعلى أو إصدار تصحيح أعلى
لحزمة معينة تستخدمها داخل تطبيق Node الخاص بك.
عندما تقوم بتثبيت حزمة، يمكنك تحديد
الإصدار الدقيق للحزمة المراد تثبيتها بقول تثبيت npm،
على سبيل المثال إذا كنت ترغب في تثبيت
الإصدار 4.0.0 من Express، فيمكنك قول express @4 .0.0.
لذلك أنت تحدد صراحة أي إصدار من الحزمة المراد تثبيتها.
إذا كنت على ما يرام مع إصدار تصحيح أعلى مستوى،
فستقول npm install express@"~ 4.0.0 إذا كان
إصدار ثانوي أعلى من الحزمة
مقبولًا، فستقول @ واسم الحزمة.
الآن يتم حفظ هذا النوع من المعلومات أيضا في ملف package.json،
سنقوم بزيارة بسرعة إلى حزمة ملف json
حيث ستلاحظ بعض هذه المعلومات التي يتم حفظها.
الآن عند القيام بالتمرين الذي يتبع هذه المحاضرة
سترى هذا في ملف package.json.
سيكون ذلك نتيجة إكمال التمرين الذي يتبع هذه المحاضرة.
في التمرين سنقوم ببناء خادم ويب بسيط باستخدام Express.
الآن اسمحوا لي أن يأخذك من خلال جولة سريعة من package.json
لتوضيح بعض المعلومات في package.json.
حتى في ملف package.json ستلاحظ هذه المعلومات هنا،
هذه الخاصية لجسون لدينا التي يتم تخزينها هنا تسمى التبعيات.
التبعيات هي المكان
الذي ستحدد فيه وحدات الطرف الثالث الإضافية
التي يعتمد عليها مشروع عقدة معين،
بحيث يمكنك أن ترى هنا نقول أن هذا المشروع يعتمد على Express
و Morgan ونلاحظ على وجه الخصوص كيف يتم تحديد هذه المعلومات هنا.
لذلك هذا هو ^4.16.3 مما يعني أن هذا
سيعمل مع أي إصدار 4.16.3 أو أعلى.
يمكنك استخدام إصدار ثانوي أعلى مستوى وسيظل هذا المشروع على ما
يرام معه وبالمثل بالنسبة لمورغان حددنا المعلومات هنا.
لذلك يتم إضافة هذه المعلومات الإضافية إلى ملف package.json كلما قمت
بتثبيت npm وتقول - حفظ العلم لتثبيت npm.
الآن، ستلاحظ أيضًا أنني قمت بإنشاء ملف.gitignore هنا وداخل
ملف.gitignore الذي حددته أن git يجب أن يتجاهل مجلد وحدات العقدة.
إذن ما هو موجود بالضبط في مجلد وحدات العقدة؟
إذا قمت بتثبيت وحدات خارجية في تطبيق Node الخاص بك،
فسيتم حفظ جميع وحدات الطرف الثالث هذه في مجلد وحدات Node هنا،
لذلك سترى داخل مشروعك أنه تم إنشاء مجلد وحدات Node هنا.
وإلقاء نظرة على مجلد وحدات العقدة سترى
مجموعة كاملة من الحزم التي تم تثبيتها.
الآن تم تثبيت كل هذه لأن
تثبيت Express و Express بدوره يعتمد على
بعض الحزم الأخرى المطلوبة حتى يتم تثبيت كل تلك أيضا هنا بشكل افتراضي. على
وجه الخصوص، اسمحوا لي أيضا أن ألفت انتباهكم إلى حزمة إكسبريس هنا،
لذلك إذا ذهبت إلى حزمة إكسبريس سترى
معلومات إضافية يتم تخزينها في حزمة إكسبريس،
لذلك منظور مؤشر أيضا لأن إكسبريس نفسه هو
وحدة عقدة سترى
ملف package.json داخل إكسبريس أيضا الذي يحتوي على
معلومات إضافية والتي بالطبع مفصلة جدا هناك، من
الصعب بالنسبة لنا أن نفهم ولكن لاحظ على وجه الخصوص
أن إكسبريس نفسه يعتمد على العديد من وحدات عقدة أخرى هنا.
وهذا هو السبب في أن جميع وحدات العقدة الأخرى هذه
قد تم تثبيتها أيضا في مجلد وحدات العقدة.
لذلك عند تثبيت Express،
سيؤدي ذلك على الفور أيضًا إلى تشغيل جميع تبعياته أيضًا ليتم تثبيتها نظرًا لأن
Express سيتطلب وحدات Node الأخرى للقيام بعملها.
أيضا، داخل إكسبريس أيضا سترى ملف index.js.
لذلك هذه هي نقطة البداية لوحدة عقدة إكسبريس نفسها
ونلاحظ على وجه الخصوص أن ملف index.js ببساطة يقول module.exports تتطلب ليب إكسبريس.
لذا فإن الشفرة الفعلية لوحدة Express نفسها موجودة داخل مشروع lib هذا،
مجلد lib هنا ويمكنك رؤية التفاصيل.
حتى إذا كنت غريبة لمعرفة تفاصيل اكسبرس نفسها يمكنك الذهاب والنظر
في هناك ولكن مرة أخرى هذا قد يكون قليلا أكثر من اللازم بالنسبة لك في هذه اللحظة.
في الوقت الحالي، اقبل حقيقة أن Express ستقوم بعملها كما هو متوقع.
ولكن اعتقدت أنه سيكون من تجربة مثيرة للاهتمام لزيارة مجلد وحدة العقدة
للنظر في بنية وحدة عقدة طرف ثالث معين في مزيد من التفاصيل.
أيضا، ستلاحظ أن هناك ملف آخر
هنا يسمى package-lock.json مثبت.
الآن يتم تثبيت هذا من قبل الإصدارات الأحدث من npm.
يتم إنشاء ملف package-lock.json تلقائيًا بواسطة
npm الذي يخزن معلومات حول
الشجرة الدقيقة التي تم إنشاؤها عند تثبيت
وحدات Node الأخرى وهذا مفيد جدًا عندما
تحتاج إلى تثبيت وحدات Node في موقع آخر.
على سبيل المثال، إذا قمت بتنزيل مستودع Git
وحاولت إعادة إنشاء هذا المشروع على جهاز كمبيوتر آخر،
فستكتب ببساطة تثبيت npm على المطالبة وسيطلب
ذلك من تطبيق Node الخاص بك
لتثبيت كل ما تم تحديده في التبعيات هنا نيابة عنك.
أثناء إنشاء أن package-lock.json يخزن معلومات إضافية يستخدمها
npm لإجراء التثبيت الصحيح لجميع وحدات npm المطلوبة.
الآن في الوقت الحالي لا داعي للقلق بشأن تفاصيل
ما هو موجود داخل ملف package-lock.json.
بهذا، نكمل هذا الدرس حيث قمنا بفحص بعض التفاصيل حول Express.