اذهب إلى المحتوى

السؤال

نشر

ما هو الفرق بين استخدام 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');
});

 

Recommended Posts

  • 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
نشر

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

فباستخدام app:

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

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

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

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

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

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

  • 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 من هنا.

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...