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

How to Deploy a Node.js Web Application_
How to Deploy a Node.js Web Application_

Node.js هي بيئة وقت تشغيل JavaScript تسمح لك بتشغيل شيفرة JavaScript خارج المتصفح.

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

في هذه المقالة، سوف تستكشف مزايا وقيود Node.js لتطوير التطبيقات من جانب الخادم وخيارات النشر لتطبيقات Node.js.

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

مزايا Node.js لتطوير تطبيقات الويب

منذ أن تم إصدار Node.js في عام 2009، كان خيارًا رئيسيًا لبناء تطبيقات الويب من جانب الخادم. فيما يلي بعض الأسباب.

الكفاءة وقابلية التوسع

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

في وقت التشغيل، يقوم مكوّنا Turbofan وCrankshaft في V8 بتحليل كود الآلة وإعادة تجميعه لتوفير أفضل أداء ممكن.

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

تجعل بنية Node.js المعيارية ودعمها المدمج للتجميع من التطبيقات المطورة باستخدامها سهلة التوسع. تسمح لك بنيتها المعيارية بتقسيم تطبيقك إلى أجزاء مكوِّنة يمكن توسيعها بشكل مستقل.

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

منحنى التعلم الضحل

تعتمد Node.js على JavaScript، وهي لغة برمجة شائعة الاستخدام في تطوير الويب. وقد سهّل استخدام JavaScript في Node.js عملية التطوير من جانب الخادم باستخدام Node.js للمطورين الذين لديهم خبرة سابقة في JavaScript.

هذا يُخفف من تعقيد تطوير الويب ويُبسّط عملية التطوير.

النظام البيئي الكبير

تمتلك Node.js مجتمعًا كبيرًا ونشطًا من المطورين الذين أنشأوا نظامًا بيئيًا واسعًا من الوحدات والحزم.

يستضيف مدير حزم Node.js، npm، أكثر من مليون حزمة يمكنك استخدامها لإضافة وظائف إلى تطبيقاتهم.

يمكن أن تتراوح هذه الحزم من مكتبات الأدوات المساعدة الصغيرة مثل lodash إلى الأطر الكبيرة Nest.js التي يمكن استخدامها لبناء تطبيقات ويب معقدة.

إن توفر مجموعة كبيرة من الوحدات والحزم يمكن أن يقلل بشكل كبير من الوقت والجهد اللازمين لتطوير تطبيقات الويب.

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

حدود Node.js لتطوير تطبيقات الويب

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

استهلاك كبير للذاكرة

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

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

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

بينما يعد نموذج البرمجة غير المتزامنة في Node.js ميزة مهمة، إلا أنه يمكن أن يكون أيضًا مصدر تعقيد للمطورين.

تتطلب البرمجة غير المتزامنة طريقة مختلفة للتفكير في تدفق البرنامج. قد يشكل هذا التحول تحديًا للمطورين الذين اعتادوا على البرمجة المتزامنة.

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

حلقة الحدث أحادية الخيط

صُمم Node.js للتعامل مع المهام كثيفة الإدخال/الإخراج، مثل الاتصال بالشبكة، وإدخال/إخراج الملفات، وعمليات قواعد البيانات.

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

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

إذا استغرقت إحدى المهام وقتًا طويلاً لإكمالها، فقد يؤدي ذلك إلى عرقلة حلقة الحدث وجعل التطبيق غير مستجيب.

نشر تطبيق ويب Node.js

هناك طرق متعددة لنشر تطبيق Node.js. دعنا نستكشف بعضًا منها.

خدمات الاستضافة السحابية

تتيح لك خدمات الاستضافة السحابية نشر تطبيق Node.js الخاص بك على خوادم تديرها شركات مثل Amazon Web Services (AWS) أو Google Cloud Platform (GCP) أو Microsoft Azure.

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

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

تتضمن بعض الأمثلة على خدمات الاستضافة السحابية لـ Node.js ما يلي:

  • AWS Elastic Beanstalk
  • GCP App Engine
  • Microsoft Azure App Service

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

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

الخوادم الافتراضية الخاصة (VPS)

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

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

لاستخدام استضافة VPS لتطبيق Node.js الخاص بك، اختر مزود استضافة يقدم صور Node.js مهيأة مسبقًا أو قم بتثبيت Node.js والتبعيات الأخرى بنفسك.

تتضمن بعض الأمثلة على موفري استضافة VPS لـ Node.js ما يلي:

  • DigitalOcean
  • Linode
  • Vultr

الحاويات

تُعدّ الحاوية تقنية لنشر التطبيقات وتشغيلها في بيئة حاوية تعزلها عن البنية التحتية الأساسية.

توفر الحاويات بديلاً خفيفًا ومرنًا للأجهزة الافتراضية التقليدية، مما يجعلها مثالية لنشر تطبيقات Node.js.

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

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

تتضمن بعض الأمثلة على المنصات التي تقدم خدمة الحاويات كخدمة (CaaS) ما يلي:

  • Back4app Containers
  • AWS ECS
  • Azure ACI
  • Google GKE

نشر تطبيق Node.js على Back4app باستخدام حاويات Back4app

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

تعمل حاويات Back4app على إزالة الفجوة بين التطوير والإنتاج من خلال أتمتة المهام المتكررة وإدارة البنية التحتية من جانب الخادم، مما يضمن لك عدم القلق بشأن DevOps.

في هذه المقالة، ستقوم ببناء ونشر تطبيق Node.js بسيط باستخدام حاويات Back4app. تطبيق Node.js الذي ستقوم ببنائه هو عبارة عن واجهة برمجة تطبيقات بسيطة لمتجر كتب مع دعم لوظائف CRUD (إنشاء، قراءة، تحديث، حذف).

إعداد بيئة التطوير الخاصة بك

أنشئ دليل مشروع جديد وقم بتهيئة npm في دليل المشروع عن طريق تشغيل الأمر أدناه:

mkdir bookstoreapp && cd bookstoreapp && npm init -y

بعد ذلك، قم بتثبيت التبعيات المطلوبة للمشروع عن طريق تشغيل الأمر أدناه:

npm install express dotenv mysql knex

التبعيات التي قمت بتثبيتها أعلاه هي

  • Express.js: Express هو إطار عمل Node.js يبسط عملية تطوير تطبيقات Node.js.
  • dotenv: dotenv هي حزمة npm يمكنك استخدامها لإدارة المتغيرات البيئية الخاصة بك.
  • MySQL: إن تبعية MySQL هي برنامج تشغيل Node.js لـ MySQL، والتي ستستخدمها كقاعدة بيانات لهذا التطبيق.
  • Knex: كنيكس هو منشئ استعلامات JavaScript. ستحتاج إلى هذه التبعية للتفاعل مع قاعدة البيانات الخاصة بك دون كتابة استعلامات SQL أولية.

بعد ذلك، أنشئ ملف routes.js وملف index.js في الدليل الجذر لمشروعك.

بعد ذلك، أضف كتلة الشيفرة أدناه إلى ملف index.js الخاص بك:

//index.js
require("dotenv").config();
const express = require("express");
const app = express();
const port = 3000;
const router = require("./routes.js");

app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.use("/", router);

app.listen(port, () => {
  console.log(`App listening at ${port}`);
});

تنشئ كتلة التعليمات البرمجية أعلاه خادم Express وتستمع لطلبات HTTP الواردة على المنفذ 3000. ويستخدم دوال البرمجيات الوسيطة لتحليل البيانات الواردة ويربط موجهًا بالمسار الجذر للتعامل مع الطلبات الواردة.

أخيرًا، يبدأ تشغيل الخادم ويسجل رسالة إلى وحدة التحكم تشير إلى أن الخادم يعمل ويستمع على المنفذ المحدد.

بعد ذلك، أضف نص بدء إلى ملف package.json الخاص بك . هكذا

"start": "node index.js",

الاتصال بقاعدة البيانات الخاصة بك

يتطلب Knex ملف knexfile يحتوي على خيارات تكوين للاتصال بقاعدة بيانات.

قم بتشغيل الأمر أدناه لإنشاء ملف knexfile:

knex init

لتهيئة Knex لاستخدام MySQL، استبدل محتويات ملف knexfile.js بالكتلة البرمجية أدناه:

// Update with your config settings.

require("dotenv").config()

/**
 * @type { Object.<string, import("knex").Knex.Config> }
 */
module.exports = {
  development: {
    client: "mysql",
    connection: {
      host: process.env.DEV_HOST,
      user: process.env.DEV_USER,
      password: process.env.DEV_PASSWORD,
      database: process.env.DEV_NAME,
    },
    migrations: {
      directory: "./db/migrations",
    }
  },
  production: {
    client: "mysql",
    connection: {
      host: process.env.DB_HOST,
      user: process.env.DB_USER,
      password: process.env.DB_PASSWORD,
      database: process.env.DB_NAME,
    },
    migrations: {
      directory: "./db/migrations",
    }
  },
};

بعد ذلك، أنشئ مجلد db في الدليل الجذر لمشروعك وأنشئ ملف db.js.

أضف كتلة الشيفرة أدناه إلى ملف db.js لديك:

//db.js

const knex = require("knex");
const knexFile = require("../knexfile.js");

const environment = process.env.NODE_ENV || "development";

module.exports = knex(knexFile[environment]);

تُعيِّن كتلة التعليمات البرمجية أعلاه متغير البيئة إما إلى متغير البيئة NODE_ENV أو التطوير إذا لم يتم تعيين NODE_ENV. وبالتالي، السماح لك بتحديد تكوينات مختلفة لبيئات مختلفة، مثل التطوير أو الإنتاج.

إنشاء ملفات الترحيل

قم بتشغيل الأمر أدناه لإنشاء ملفات الترحيل لقاعدة البيانات الخاصة بك:

knex migrate:make bookstore

ينشئ الأمر أعلاه ملف ترحيل في مسار الملف المحدد في knexfile.js الخاص بك (“./db/migrations”).

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

/**
 * @param { import("knex").Knex } knex
 * @returns { Promise<void> }
 */
exports.up = function (knex) {
  return knex.schema.createTable("books", (table) => {
    table.increments("id").primary();
    table.string("title");
    table.string("author");
    table.string("genre");
    table.timestamps(true, true);
  });
};

/**
 * @param { import("knex").Knex } knex
 * @returns { Promise<void> }
 */
exports.down = function (knex) {
  return knex.schema.dropTableIfExists("books");
};

بعد ذلك، قم بتشغيل الأمر أدناه لتنفيذ ملف الترحيل:

knex migrate:latest

تنفيذ التوجيه

أخيرًا، أضف الكتلة البرمجية أدناه إلى ملف routes.js الخاص بك:

const express = require("express");
const router = express.Router();
const db = require("./db/db.js");

// GET /books
router.get("/books", async (req, res) => {
  try {
    const books = await db("books");
    res.json(books);
  } catch (err) {
    console.error(err);
    res.status(500).send("Internal Server Error");
  }
});

//POST /books/new
router.post("/books/new", async (req, res) => {
  try {
    const { title, author, genre } = req.body;
    const book = await db("books").insert({
      title,
      author,
      genre,
    });
    res.status(201).json(book);
  } catch (err) {
    console.error(err);
    res.status(500).send("Internal Server Error");
  }
});

//PUT /books/:id
router.put("/books/:id", async (req, res) => {
  const { id } = req.params;

  try {
    const { title, author, genre } = req.body;
    const book = await db("books").where({ id }).update(
      {
        title,
        author,
        genre,
      },
      ["id", "title", "author", "genre"]
    );

    if (book.length !== 0) {
      res.status(201).send(book);
    } else {
      res.status(404).json({ error: "Book not found" });
    }
  } catch (err) {
    console.error(err);
    res.status(500).send("Internal Server Error");
  }
});

//DELETE /books/:id
router.delete("/books/:id", async (req, res) => {
  const { id } = req.params;

  try {
    const book = await db("books").where({ id }).del();

    if (book !== 0) {
      res.status(200).json({ message: "Book deleted" });
    } else {
      res.status(404).json({ error: "Book not found" });
    }
  } catch (err) {
    console.error(err);
    res.status(500).send("Internal Server Error");
  }
});

module.exports = router;

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

إنشاء ملف Dockerfile

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

لتشغيل تطبيق Node.js على حاويات Back4app، يجب عليك إنشاء ملف Dockerfile يحتوي على تعليمات لبناء صورة Docker.

قم بتشغيل الأمر أدناه لإنشاء ملف Dockerfile:

touch Dockerfile

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

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

# Specify base image
FROM node:18-alpine

يحدد هذا السطر الصورة الأساسية التي ستُبنى عليها صورة Docker هذه. في هذه الحالة، يعمل الإصدار 18 من Node.js على توزيع Alpine Linux.

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

أضف الكتلة البرمجية أدناه إلى ملف Dockerfile الخاص بك لتحديد دليل العمل الخاص بك:

# Specify working directory
WORKDIR /app

بعد ذلك، تحتاج إلى نسخ ملفي package.json و package-lock.json من الدليل الحالي (أي الدليل الذي يحتوي على ملف Dockerfile) إلى دليل العمل(/app).

أضف الكتلة البرمجية أدناه إلى ملف Dockerfile الخاص بك لنسخ الملفات:

# Copy package.json and package-lock.json
COPY package*.json ./

بعد ذلك، تحتاج إلى تشغيل الأمر npm install في دليل العمل لتثبيت تبعيات Node.js المدرجة في package.json و package-lock.json.

أضف الكود أدناه إلى ملف Dockerfile الخاص بك لتثبيت التبعيات:

# Install dependencies
RUN npm install

سيقوم الأمر أعلاه بتثبيت جميع التبعيات المدرجة في ملفات package.json ****و package-lock.json وتخزينها في مجلد node_modules في دليل العمل المحدد.

بعد ذلك، تحتاج إلى نسخ الشيفرة المصدرية لتطبيقك إلى دليل العمل الخاص بك.

أضف كتلة التعليمات البرمجية أدناه إلى ملف Dockerfile الخاص بك لنسخ الشيفرة المصدرية:

# Copy source code
COPY . .

بعد ذلك، تحتاج إلى تعريض منفذ للجهاز المضيف. يسمح تعريض المنفذ لحاوية Docker باستقبال اتصالات الشبكة الواردة على المنفذ المكشوف عند تشغيلها.

أضف كتلة التعليمات البرمجية أدناه إلى ملف Dockerfile الخاص بك لتعريض المنفذ 3000 إلى الجهاز المضيف:

# Expose port 3000
EXPOSE 3000

أخيرًا، تحتاج إلى تحديد الأمر الذي يجب تشغيله عند بدء تشغيل حاوية Docker. عادةً ما يتم بدء تشغيل تطبيقات Node.js باستخدام الأمر npm start.

أضف الكتلة البرمجية أدناه إلى ملف Dockerfile الخاص بك لتحديد الأمر:

# Run the app
CMD ["npm", "start"]

يجب أن يبدو ملف Dockerfile النهائي الخاص بك مثل كتلة التعليمات البرمجية أدناه:

# Specify base image
FROM node:18-alpine

# Specify working directory
WORKDIR /app

# Copy package.json and package-lock.json
COPY package*.json ./

# Install dependencies
RUN npm install

# Copy source code
COPY . .

# Expose port 3000
EXPOSE 3000

# Run the app
CMD ["npm", "start"]

بعد إنشاء ملف Dockerfile الخاص بك، ادفع شفرتك إلى GitHub.

إنشاء تطبيق Back4app جديد

الخطوة الأولى لنشر تطبيق Node.js على Back4app هي إنشاء حساب على Back4app (إذا لم يكن لديك حساب). يمكنك إنشاء حساب باتباع الخطوات التالية.

  1. انتقل إلى موقع Back4app الإلكتروني.
  2. بعد ذلك، انقر على زر التسجيل في الزاوية العلوية اليمنى من الصفحة المقصودة.
  3. وأخيراً، املأ نموذج التسجيل وأرسله.

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

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

إنشاء تطبيق جديد على Back4app

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

اختر التطبيق الذي تريد نشره، في هذه الحالة، التطبيق الذي أنشأته في هذا البرنامج التعليمي، وانقر فوق تحديد.

اختر مستودع GitHub للنشر

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

تفاصيل حاوية Back4app الخاصة بك

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

حاويات Back4app تملأ صفحة المعلومات مع زر إنشاء تطبيق مميز

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

صفحة نشر حاويات Back4app Back4app Containers.

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

الخاتمة

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

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

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

هل ما زلت مهتمًا بنشر Node.js واستضافته؟ يرجى مراجعة هذين الدرسين التعليميين:

الأسئلة الشائعة

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

– إعداد بيئة التطوير
– الاتصال بقاعدة البيانات
– إنشاء ملفات الترحيل
– تنفيذ التوجيه
– إنشاء ملف Dockerfile
– إنشاء تطبيق Back4app جديد


Leave a reply

Your email address will not be published.