كيفية نشر تطبيق Node.js؟

how_to_deploy_nodejs_app

سنشرح في هذه المقالة كيفية نشر تطبيق Node JS. سنتحدث عن مزايا وعيوب Node، وخيارات النشر – بما في ذلك IaaS و PaaS و BaaS. أخيرًا، سننشر تطبيق Node على Back4app.

ما هو Node.js؟

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

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

تم تقديم هذه التقنية لأول مرة في عام 2009 من قبل مبتكرها ريان دال في معرض جافا سكريبت الأوروبي السنوي. وسرعان ما أصبحت واحدة من أكثر البرمجيات إثارة للاهتمام في نظام جافا سكريبت البيئي.

بلغت شعبية Node ذروتها في عام 2017 ولا تزال مرتفعة. فهي واحدة من أكثر أدوات التطوير شيوعًا التي تستخدمها الكثير من الشركات التي تقدر بملايين الشركات مثل IBM وLinkedIn وMicrosoft وNetflix وغيرها. إن بساطتها وقدرتها على التوسع تجعلها مناسبة تماماً لجميع أحجام الشركات – بما في ذلك الشركات الناشئة.

في القسمين التاليين، سنتناول في القسمين التاليين مزايا العقدة وعيوبها.

مزايا Node.js

أداء عالٍ

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

تستخدم Node أيضًا حلقة حدث تسمح لها بإجراء عمليات إدخال/إخراج غير متوقفة – على الرغم من كون JavaScript لغة برمجة أحادية الخيوط. وهذا يجعلها واحدة من أسرع الخيارات في السوق.

قابلية التوسع

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

كما أن Node مناسبة تمامًا لهندسة الخدمات المصغرة، مما يسمح للمطورين بإنشاء مكونات صغيرة تتناسب مع خط أنابيب التسليم المستمر ويمكن توسيع نطاقها بسهولة عند الطلب.

سهل التعلم

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

وقت أسرع للتسويق

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

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

أداة تم اختبارها في المعارك

Node هي أداة مختبرة وناضجة تم اختبارها في المعارك، وهي موجودة منذ عام 2009. وقد تم اختبار ثباتها من قبل شركات كبرى مثل eBay وNetflix وLinkedIn التي تضم ملايين المستخدمين يومياً.

نظرًا لامتيازاتها الرائعة، يتم تضمين Node في عدد من حزم التكنولوجيا (عادةً ما تكون مدمجة مع Express وقاعدة بيانات NoSQL). تتضمن بعض الحزم التقنية مع Node ما يلي:

  • ميرن
  • متوسط
  • ديرن

مجتمع رائع

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

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

حدود Node.js

انخفاض الأداء في المهام المعقدة

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

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

نموذج البرمجة غير المتزامنة

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

يمكن تجنب جحيم رد الاستدعاء والمشاكل الأخرى للبرمجة غير المتزامنة بسهولة باتباع مبادئ التعليمات البرمجية النظيفة.

واجهة برمجة تطبيقات API غير مستقرة

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

عدم وجود نظام دعم مكتبات قوي

لا تأتي JavaScript بنظام مكتبات جيد مقارنةً بلغات البرمجة الأخرى. وهذا يجبر الكثير من المطورين على دعم العديد من المهام الشائعة مثل معالجة الصور، وتحليل XML، وتخطيط الكائنات العلائقية (ORM)، والتعامل مع قواعد البيانات، وغيرها.

سجل الوحدات المتضخم وغير الناضج

تمتلك Node مجتمعًا ضخمًا من المطورين الذين ينتجون آلاف الوحدات النمطية مفتوحة المصدر التي يتم نشرها على npm. المشكلة في ذلك هي أن npm لا تنفذ أي فحوصات للتأكد من أن كود الوحدة النمطية يعمل ومكتوب بشكل جيد.

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

لا تفهمني بشكل خاطئ، أعتقد أن npm رائع، ولكن لا يزال عليك توخي الحذر عند تثبيت وحدات عشوائية.

خيارات نشر Node.js

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

  1. الاستضافة التقليدية
  2. البنية التحتية كخدمة (IaaS)
  3. المنصة كخدمة (PaaS)
  4. الواجهة الخلفية كخدمة (BaaS)

يمكننا عرضها في مخطط هرمي بناءً على مستوى تجريدها:

نماذج النشر السحابي

تهتم خيارات النشر بطبقات التجريد التالية:

IaaS مقابل PaaS مقابل BaaS مقابل IaaS

دعونا نلقي نظرة على كل مجموعة من المجموعات. سوف نتخطى الاستضافة التقليدية لأنني متأكد من أنك تعرف كيف يعمل ذلك.

خدمات IaaS كخدمة كخدمة مثل AWS

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

IaaS قابلة للتطوير بدرجة كبيرة. فهي تمكن العملاء من التوسع بسهولة عمودياً وأفقياً حسب الطلب. عادةً ما يتبع بائعو IaaS نموذج الدفع حسب الاستخدام، مما يعني أنك تدفع فقط مقابل الموارد التي تستهلكها.

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

على النقيض من PaaS و BaaS، توفر IaaS أدنى مستوى من التحكم في الموارد في السحابة. وهذا يجعلها أكثر نماذج الحوسبة السحابية مرونة. أما الجانب السلبي لها فهو أن العميل مسؤول بشكل كامل عن إدارة جوانب مثل التطبيقات، وأنظمة التشغيل، والبرمجيات الوسيطة، والبيانات، وهو ما يستغرق عادةً الكثير من الوقت.

بعض أمثلة IaaS النموذجية هي

  • خدمات أمازون ويب أمازون (AWS)
  • محرك Google Compute Engine (GCE)
  • مايكروسوفت أزور
  • ديجيتال أوشن
  • لينود
  • راكسبيس

خدمات PaaS مثل Heroku

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

تمكّن PaaS المستخدمين من التركيز على تطبيقاتهم بدلاً من إدارة البنية التحتية الأساسية. يقوم موفرو PaaS بالكثير من الأعمال الشاقة نيابةً عنك مثل إدارة الخوادم وأنظمة التشغيل وبرامج الخوادم والنسخ الاحتياطية وغيرها.

بعض مزايا PaaS هي

  • سرعة أسرع في الوصول إلى السوق
  • زيادة الأمن
  • فعالية التكلفة
  • قابلية التوسع
  • التوافر العالي
  • تقليل الرمز المطلوب

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

تشمل خدمات المنصة كخدمة PaaS ما يلي:

  • هيروكو
  • AWS Elastic Beanstalk المرن AWS
  • منصة تطبيقات DigitalOcean
  • خدمة تطبيقات مايكروسوفت أزور أزور
  • منصة Fly Platform (Fly.io)
  • تقديم

خدمات BaaS مثل Back4app

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

يتيح ذلك للمطورين التركيز على الأعمال الأساسية وبناء الواجهة الأمامية دون القلق بشأن الواجهة الخلفية والبنية التحتية الأساسية. وعادةً ما يتم تطوير الواجهة الأمامية من خلال واجهات برمجة التطبيقات المتخصصة وحزم تطوير البرمجيات التي يقدمها بائع BaaS. وهذا يجعل التطبيقات أقل تعقيدًا وأسهل في الصيانة.

توفر BaaS جميع مزايا IaaS وPaaS مع تضمين تجريد الواجهة الخلفية. الفرق التي تستفيد من BaaS تقلل بشكل كبير من الوقت اللازم للتسويق، وتقلل من التكاليف الهندسية، وتتطلب عددًا أقل من المهندسين.

يمكن استخدام BaaS لأنواع عديدة من المشاريع – بما في ذلك إنشاء منتج MVP (الحد الأدنى من المنتجات القابلة للتطبيق)، أو التطبيقات المستقلة أو التطبيقات التي تتطلب عددًا صغيرًا من عمليات التكامل وتطبيقات المؤسسات التي ليست ذات أهمية حرجة.

تتمثل سلبيات BaaS في أنها أقل مرونة من IaaS و PaaS، وتوفر مستوى أقل من التحكم والتخصيص، وهناك إمكانية الانغلاق على المنصات غير مفتوحة المصدر.

بعض الأمثلة على BaaS

  • باك فور آب
  • AWS Amplify
  • فايربيس
  • التحليل
  • كلاودكيت
  • باك إندليس

عملية نشر Node.js

في هذا الجزء من المقالة، سنلقي نظرة على Back4app ونتعلم كيفية إنشاء تطبيق Node JS ونشره

ما هو تطبيق Back4app؟

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

يأتي الحل مع لوحة تحكم غنية بالميزات وسهلة الاستخدام وواجهة سطر الأوامر (CLI). كما أنها توفر أيضًا حزم SDK لجميع أدواتك المفضلة مثل Flutter و React Native و Node.js و Angular و Android و iOS والمزيد!

تتضمن ميزات Back4app الرئيسية ما يلي:

  • قاعدة بيانات تشبه جدول البيانات
  • واجهات برمجة تطبيقات REST و GraphQL
  • استفسارات مباشرة
  • المصادقة (بما في ذلك المصادقة الاجتماعية)
  • استضافة قابلة للتطوير
  • إشعارات الدفع والبريد الإلكتروني

للمزيد من المعلومات عن ميزاتها راجع ميزات تطبيق Back4app.

يتبع Back4app نموذج أسعار بسيط ومباشر يمكن أن يناسب أي تطبيق من أي حجم. يقدمون باقة مجانية سخية (لا حاجة لبطاقة ائتمان) وهي رائعة للنماذج الأولية واختبار المنصة. وهي تشمل:

  • 25 ألف طلب
  • تخزين البيانات 250 ميغابايت
  • نقل 1 غيغابايت
  • مساحة تخزين الملفات 1 جيجابايت

لمزيد من المعلومات حول أسعار Back4app، ألق نظرة على صفحة التسعير.

مقدمة المشروع

سنقوم بترميز ونشر تطبيق ويب TODO بسيط على الويب. سيدعم تطبيق الويب عمليات CRUD الأساسية – الإنشاء والاسترجاع والتحديث والحذف. سنقوم بترميزه باستخدام Node.js باستخدام إطار عمل الويب Express، وسيتم التعامل مع تخزين البيانات بواسطة Parse، وسنستخدم Twig كمحرك للنمذجة.

انقر هنا لمشاهدة التطبيق الذي تم نشره أثناء العمل!

المتطلبات الأساسية:

  • فهم أساسيات Node.js
  • الفهم الأساسي لـ Express
  • خبرة في محرك النمذجة
  • الفهم الأساسي لقواعد البيانات و ParseJS

Back4app CLI

ستتطلب الخطوات التالية أن يكون لديك حساب Back4app. إذا كان لديك حساب بالفعل قم بتسجيل الدخول وإلا فقم بالتسجيل للحصول على حساب مجاني.

Back4app CLI هي واجهة سطر أوامر تتيح لك التفاعل مع منصة Back4app.

لتثبيته على نظام التشغيل Mac/Linux، قم بتشغيل:

$ curl https://raw.githubusercontent.com/back4app/parse-cli/back4app/installer.sh | sudo /bin/bash

سيقوم الأمر بتنزيل أحدث ثنائي CLI وتخزينه في /usr/local/bin/b4a.

لأنظمة التشغيل الأخرى يرجى الرجوع إلى المستندات الرسمية.

لاستخدام واجهة CLI، سيتعين عليك المصادقة باستخدام حسابك. للقيام بذلك تحتاج أولاً إلى إنشاء مفتاح حساب. انتقل إلى لوحة تحكم Back4app وانقر على اسم المستخدم الخاص بك (أعلى يمين الشاشة)، ثم “مفاتيح الحساب”:

مفاتيح حساب Back4app

لإضافة مفتاح حساب جديد أدخل اسم مفتاح مخصص ثم اضغط على “+”. دوّن المفتاح لأننا سنحتاج إليه في الخطوة التالية:

مفاتيح حساب Back4app

بعد أن تنتهي من إنشاء المفتاح بنجاح، ارجع إلى المحطة الطرفية وقم بتشغيله:

$ b4a configure accountkey

Input your account key or press ENTER to generate a new one.       
NOTE: on pressing ENTER we'll try to open the url:                 
        "http://dashboard.back4app.com/classic#/wizard/account-key"
in default browser.
Account Key: <YOUR_GENERATED_ACCOUNT_KEY>
Successfully stored account key for: "<YOUR_EMAIL>".

للتأكد من أن المصادقة تعمل، حاول إدراج تطبيقاتك:

$ b4a list

These are the apps you currently have access to:

إذا كان حسابك جديدًا تمامًا مثل حسابي فلن يتم إدراج أي تطبيقات.

إنشاء تطبيق

للمضي قدمًا، دعنا ننشئ تطبيق Back4app.

اركض:

$ b4a new

Would you like to create a new app, or add Cloud Code to an existing app?
Type "(n)ew" or "(e)xisting": n
Please choose a name for your Parse app.
Note that this name will appear on the Back4App website,
but it does not have to be the same as your mobile app's public name.
Name: nodejs-back4app
Awesome! Now it's time to set up some Cloud Code for the app: "nodejs-back4app",
Next we will create a directory to hold your Cloud Code.
Please enter the name to use for this directory,
or hit ENTER to use "nodejs-back4app" as the directory name.

Directory Name:
You can either set up a blank project or create a sample Cloud Code project
Please type "(b)lank" if you wish to setup a blank project, otherwise press ENTER: 
Successfully configured email for current project to: "<YOUR_EMAIL>"
Your Cloud Code has been created at /dev/nodejs-back4app.
  1. إنشاء تطبيق جديد أو حالي: جديد
  2. اختر اسمًا للتطبيق: اختر اسمًا مخصصًا
  3. اسم الدليل: اضغط ENTER
  4. فارغ أو نموذج مشروع الرمز السحابي: اضغط ENTER

سيقوم الأمر بإنشاء دليل بالبنية التالية:

nodejs-back4app/
├── cloud/
│   └── main.js
├── public/
│   └── index.html
├── .parse.local
└── .parse.project
  1. السحابة هو دليل لجميع التعليمات البرمجية والوظائف السحابية
  2. العام هو دليل للملفات العامة مثل الصور وأوراق الأنماط وغيرها
  3. يتم استخدام.parse.local و .parse.project لتخزين تكوين Parse

احذف ملف main.js وملف index.html لأننا لن نحتاج إليهما.

استضافة الويب

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

لتمكين خاصية استضافة الويب، انتقل إلى لوحة تحكم Back4app، وحدد تطبيقك، وانقر على “إعدادات التطبيق” على الجانب الأيسر من الشاشة، ثم “إعدادات الخادم”. ابحث عن “استضافة الويب والنطاقات المخصصة” وانقر على “الإعدادات” مرة أخرى.

انقر على “تنشيط استضافة Back4app” واختر اسم نطاق فرعي. سأستخدم nodejsback4app:

استضافة مواقع الويب Back4app

وأخيراً، انقر فوق “حفظ”.

سيكون تطبيقك بعد ذلك متاحاً على:

https://<your_subdomain>.b4a.app/

لا تتردد في ربط نطاق مخصص بتطبيق الويب الخاص بك أيضًا!

التعبير باستخدام وظائف الرموز السحابية

بعد ذلك، لنبدأ العمل على الكود الفعلي.

غيِّر الدليل إلى السحابة وأنشئ ملف package.json بداخله:

يستخدم Back4app هذا الملف لتنزيل الوحدات النمطية عبر npm. أضفنا أداة تحليل الجسم لأننا سنحتاجها لاحقًا لتحليل الطلبات.

بعد ذلك، قم بإنشاء ملف آخر في مجلد السحب باسم app.js:

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

بعد ذلك، انشر التطبيق:

$ b4a deploy

Uploading source files
Uploading recent changes to scripts...
Finished uploading files
New release is named v1 (using Parse JavaScript SDK v2.2.25)

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

للتأكد من عمله، افتح متصفح الويب المفضل لديك وانتقل إلى تطبيقك:

https://<your_subdomain>.b4a.app/

# Example
https://nodejsback4app.b4a.app/

يجب أن تحصل على الرد التالي:

أحسنت صنعاً!

في الأقسام التالية، سنبدأ العمل على تطبيق TODO الفعلي.

قاعدة البيانات مع ParseJS

دعنا نحدد نماذج قاعدة البيانات لتطبيق TODO.

انتقل إلى لوحة تحكم Back4app وحدد “قاعدة البيانات” على الجانب الأيسر من الشاشة. بعد ذلك انقر على “إنشاء فئة جديدة”، وقم بتسميتها "مهمة ” وتأكد من وضع علامة “تمكين القراءة والكتابة العامة”:

Back4app إنشاء فئة جديدة

بعد ذلك، أضف الأعمدة التالية:

+-----------+-------------+---------------+----------+
| Data type | Name        | Default value | Required |
+-----------+-------------+---------------+----------+
| String    | name        | <leave blank> | yes      |
+-----------+-------------+---------------+----------+
| String    | description | <leave blank> | no       |
+-----------+-------------+---------------+----------+
| Boolean   | isDone      | false         | yes      |
+-----------+-------------+---------------+----------+

منطق التطبيق

سيحتوي التطبيق على نقاط النهاية التالية:

  1. / عرض قائمة المهام
  2. /إنشاء/إنشاء مهمة
  3. /<ID> يعرض تفاصيل المهمة
  4. / <<ID>/حذف يحذف مهمة
  5. / <<ID>/التبديل لتبديل حالة المهمة – تم/لم يتم

لنصنعها.

لجعل شيفرتنا السحابية أكثر قابلية للصيانة، سنقسمها إلى ملفين.

  1. app.js – تهيئة خادم Express وتهيئته
  2. مسارات.js – يحدد نقاط النهاية ومنطقها

هناك نهج أفضل لبناء تطبيقات الويب الحديثة وهو استخدام النمط المعماري نموذج-عرض-متحكم (MVC). البداية الجيدة مع Express هي استخدام Express-generator.

تابع واستبدل محتويات app.js بما يلي:

  1. قمنا بتعيين Twig كمحرك العرض الافتراضي.
  2. لم يعد يتم تعريف المسارات في هذا الملف، بل في routes.js.

بعد ذلك، أنشئ مسارات.js وضع الشيفرة التالية:

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

للحصول على معلومات إضافية حول ParseJS ألق نظرة على دليل جافا سكريبت.

بعد ذلك، دعنا نرافق نقاط النهاية بقوالب العرض.

قم بإنشاء مجلد طرق العرض داخل مجلد السحب، وقم بتنزيل ملفات القالب من ريبو GitHub وضعها في دليل طرق العرض.

يجب أن تبدو بنية الدليل النهائي الخاص بك على النحو التالي:

nodejs-back4app/
├── cloud/
│   ├── views/
│   │   ├── base.twig
│   │   ├── create.twig
│   │   ├── error.twig
│   │   ├── index.twig
│   │   └── task.twig
│   ├── app.js
│   ├── routes.js
│   └── package.json
├── public
├── parse.local
└── parse.project

أخيرًا، أضف twing إلى package.json لتمكين دعم Twig:

نشر التطبيق:

$ b4a deploy

Uploading source files
Uploading recent changes to scripts...
Finished uploading files
New release is named v2 (using Parse JavaScript SDK v2.2.25)

وانتهى الأمر. انتظر بضع دقائق ثم قم بزيارة تطبيق الويب للتأكد من أن كل شيء يعمل.

الملفات العامة

كما ذكرنا في القسم السابق Back4app يخدم تلقائيًا الملفات الموجودة في المجلد العام. لاستخدامها في القوالب الخاصة بك، سيتعين عليك تعديل إعدادات Express قليلاً.

انتقل إلى app.js وأضف الأسطر التالية:

يمكنك بعد ذلك الرجوع إلى الملفات العامة في قوالبك عبر المسار النسبي:

<img src="/back4app.png" alt="Back4app Logo">

يعرض الصورة الموجودة في public/back4app.png.png.

الخاتمة

تنمو Node وتتحسن بشكل مطرد منذ إصدارها في عام 2009. وهي واحدة من أفضل الأدوات التي تتيح للمطورين إنشاء تطبيقات عالية الأداء قابلة للتطوير بسهولة.

يمكن نشر تطبيقات العقدة على حلول مختلفة مثل IaaS و PaaS و SaaS. لكل منها مزاياها وعيوبها التي يجب أخذها في الاعتبار عند اختيار خيار النشر.

واحدة من أسهل الطرق لنشر تطبيقات Node هي استخدام Back4app – وهو حل BaaS مفتوح المصدر مع الكثير من الميزات. يعد Back4app رائعًا لأنه يسمح لك بالتركيز على ما هو مهم مع الاستعانة بمصادر خارجية للواجهة الخلفية ونشرها.

احصل على الشيفرة المصدرية النهائية من مستودع back4app-nodejs.

لمعرفة المزيد عن خيارات استضافة Node.js، يرجى الاطلاع على كيفية استضافة تطبيق Node.JS باستخدام الحاويات.


Leave a reply

Your email address will not be published.