• 0

الفرق بين استخدام app أو route

ما هو الفرق بين استخدام app مباشرة لتحديد endpoint او استخدام route

const express = require('express');

const app = express();

app.get('/', function (req, res) {
  res.send('Hello World!');
});



app.listen(4000, () => {
  console.log('server running');
});
const express = require('express');

const app = express();

const router = app.router;

router.get('/', function (req, res) {
  res.send('hello world');
});

app.listen(4000, () => {
  console.log('server running');
});

 

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 1

لكي نفهم جيد الفرق بين استخدام app أو route

لنعاين المثالين التاليين

// app.js

var express = require('express'),
    dogs    = require('./routes/dogs'),


var app = express();

app.use('/dogs',  dogs);
app.use('/cats',  cats);
app.use('/birds', birds);


app.listen(3000);
//dogs.js

var express = require('express');

var router = express.Router();

router.get('/', function(req, res) {
    res.send('GET handler for /dogs route.');
});

router.post('/', function(req, res) {
    res.send('POST handler for /dogs route.');
});

module.exports = router;

عندما يتم استدعاء ()var app = express  ، يتم إرجاع كائن app. . التطبيق الرئيسي

عندما يتم استدعاء var router = express.Router، يتم إرجاع تطبيق صغير مختلف قليلاً.

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

في المثال أعلاه ، تم نقل رمز المسار / dogs إلى ملفه الخاص حتى لا يتسبب في تشويش التطبيق الرئيسي. سيتم تنظيم الكود الخاص بـ / dogs بالمثل في ملفاتهم الخاصة. من خلال فصل هذا الرمز إلى ثلاثة تطبيقات صغيرة ، يمكنك العمل على منطق كل واحد على حدة ، ولا تقلق بشأن كيفية تأثيره على التطبيقين الآخرين. cats و birds

إذا كان لديك كود middleware يتعلق بجميع المسارات الثلاثة ، فيمكنك وضعه في التطبيق الرئيسي ، قبل app.use  إذا كان لديك كود middleware  يتعلق بواحد فقط من هذه المسارات ، يمكنك وضعه في الملف لهذا المسار فقط.

1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 1

من إحدى وأهم الفروقات هو إمكانية إضافة middlewares على مستويات مختلفة.

فباستخدام app:

app.get('/', [.....],)

يمكننا تطبيق وسيط middleware على مستوى التطبيق App Level.

أما باستخدام router:

router.get('/',[...])

يمكننا تطبيق وسيط middleware فقط على مستوى التوجيهات routes.

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

1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 0
app.get()

يشبه إلى حد كبير

router.get()

App Object  عبارة عن جهاز توجيه ( router )يحتوي أيضًا على بعض الخصائص والدول الأخرى عليه. لذلك , فإن معظم أي دالة من كائن التوجيه ( route object ) تكون أيضًا على كائن app ، ولكن ليس العكس.

غالبًا ما يكون من المفيد تجميع مسارات التوجيه لجزء معين من الموقع معًا والوصول إليها باستخدام route-prefix (على سبيل المثال , قد يحتوي الموقع الذي يحتوي على Wiki على جميع المسارات ذات الصلة بـ wiki في ملف واحد ويتم الوصول إليها ببادئة المسار من / ويكي /). في Express يتم تحقيق ذلك باستخدام كائن express.Router. على سبيل المثال , يمكننا إنشاء مسار wiki الخاص بنا في وحدة نمطية تسمى wiki.js , ثم تصدير كائن جهاز التوجيه ,

const express = require('express');
const router = express.Router();

router.get('/', function(req, res) {
  res.send('صفحة رئيسية');
});

router.get('/about', function(req, res) {
  res.send('حول wiki');
});

module.exports = router;

يمكنك القراءة أكثر عن هذا الموضوع من خلال توثيق routing على expressjs من هنا.

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 0

Thanks for sharing

تمّ تعديل بواسطة Sutton Velma

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن