Tamim Fahed نشر 10 يوليو 2021 أرسل تقرير نشر 10 يوليو 2021 قمت بإضافة express.js من جهة الخادم node.js ولاحظت وجود طريقتين للتضمين ضمن الكود: var express = require('express'); var app = express(); app.listen(3000); والشكل التالي: var express = require('express'); var http = require('http'); var app = express(); var server = http.createServer(app); server.listen(3000); ما الفرق بين هذه الطرق؟ وهل يجب استخدام إحداها أفضل من الأخرى؟ 2 اقتباس
1 عبدالباسط ابراهيم نشر 10 يوليو 2021 أرسل تقرير نشر 10 يوليو 2021 (معدل) في الطريقة الثانية تقوم أنت بالقيام ب إنشاء server بنفسك ولكن في الطريقة الأولى يقوم express بالقيام بذلك بدلاً عنك حيث أن ربما تستخدم ال HTTP server في وظيفة أخرى مثل استخدام socket.io سيكون كالتالي var express = require('express'); var app = express(); var server = require('http').createServer(app); var io = require('socket.io').listen(server); ... server.listen(1234); مع أن أيضاً app.listen() تقوم بإرجاع الكائن HTTP server تم التعديل في 11 يوليو 2021 بواسطة عبدالباسط ابراهيم خطأ إملائي اقتباس
1 Wael Aljamal نشر 10 يوليو 2021 أرسل تقرير نشر 10 يوليو 2021 الفرق الآخر هو في حالة اختيار مخدم بشكل https الخاص بالاتصال الآمن حيث أن express يعيد http.Server object أما في الطريقة الثانية يمكننا بناء المخدم من https: var https = require('https'); var server = https.createServer(app).listen(config.port, function() { console.log('Https App started'); }); الشكل الافتراضي لكليهما: http.createServer(app).listen(80); https.createServer(options, app).listen(443); وإن أردت جعل express يشغل كلاً من http - https يمكن استعمال المنطق التالي: // تضمين مكتبات var fs = require('fs'); var http = require('http'); var https = require('https'); var privateKey = fs.readFileSync('sslcert/server.key', 'utf8'); var certificate = fs.readFileSync('sslcert/server.crt', 'utf8'); // إعادادات https var credentials = {key: privateKey, cert: certificate}; var express = require('express'); var app = express(); // تجهيز المخدم var httpServer = http.createServer(app); var httpsServer = https.createServer(credentials, app); // تشغيل المخدمين httpServer.listen(8080); httpsServer.listen(8443); 3 اقتباس
0 عبدالله عبدالرحمن11 نشر 11 يوليو 2021 أرسل تقرير نشر 11 يوليو 2021 من التوثيق الرسمي ل express اقتباس التطبيق الذي تم إرجاعه بواسطة express () هو في الواقع دالة JavaScript ، تم تصميمها ليتم تمريرها إلى خوادم HTTP الخاصة بـ Node ك callback للتعامل مع الطلبات. هذا يجعل من السهل توفير كل من إصداري HTTP و HTTPS من تطبيقك بنفس قاعدة الكود ، حيث أن التطبيق لا يرث من هذين http.createServer(app).listen(80); https.createServer(options, app).listen(443); اقتباس تقوم دالة app.listen () بإرجاع كائن http.Server و (لـ HTTP) هي طريقة ملائمة لما يلي: app.listen = function() { var server = http.createServer(this); return server.listen.apply(server, arguments); }; اقتباس
1 Salah Eddin Beriani2 نشر 11 يوليو 2021 أرسل تقرير نشر 11 يوليو 2021 لا يوجد سبب حقيقي لإنشاء خادم http الخاص بك باستخدام وحدة http. سوف يقوم Express بعمل ذلك نيابةً عنك من خلال app.listen اذا اطلعت على شيفرة المصدر الخاصة ب express في github وتحديدا الطريقة listen سترى أن express يهيأ http لك app.listen = function listen() { var server = http.createServer(this); return server.listen.apply(server, arguments); }; إذا كنت تقوم بإنشاء خادم https ، فستحتاج إلى استخدام وحدة https وتمرير بيانات اعتماد الأمان إلى https.createServer من أجل إنشاء خادم تم تكوينه بشكل صحيح. لا يمتلك Express القدرة على إنشاء خادم https مهيأ بشكل صحيح لك تلقائيًا. أيضا عند استخدام socket io كما ذكر الاخوة في التعليقات السابقة هنا يمكن استخدام http server وذلك حتى تتمكن من لصق socket الى السرفر لـن express لا يقوم بذلك ختاما يجب استخدام http فقط في حالة اذا كنت تريد ربط شئ بذلك الخادم أو تعديل معاييره اقتباس
السؤال
Tamim Fahed
قمت بإضافة express.js من جهة الخادم node.js ولاحظت وجود طريقتين للتضمين ضمن الكود:
var express = require('express'); var app = express(); app.listen(3000);
والشكل التالي:
var express = require('express'); var http = require('http'); var app = express(); var server = http.createServer(app); server.listen(3000);
ما الفرق بين هذه الطرق؟ وهل يجب استخدام إحداها أفضل من الأخرى؟
4 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.