
حول بدائل Express ، وأين ولماذا يستحق الأمر التخلي عن Express'a والقياسات الصغيرة في الترجمة تحت القص
اكسبريس
Express عبارة عن إطار عمل Node.js بسيط وموثق جيدًا ومدعوم بدرجة عالية وأكثر تنزيلًا.
إذا حاولت google كيفية إنشاء خادم HTTP بسيط ، فمن المرجح أن الطلب الأول يمنحك شيئًا مثل هذا:
const server = require('express')({}) server.get('/', (req, res) => { res.send('Hello World!') }); server.listen(3000);
واجهات برمجة التطبيقات REST
في بنية التطبيقات التي طورتها الشركات ، تستمر خدمات REST API و REST في لعب دور أساسي ، لأن HTTP لا يزال يستخدم كبروتوكول رئيسي للاتصال. هذا يعني أن المبرمج الذي سيقوم بإنشاء تطبيق جديد أو خدمة متناهية الصغر سيستخدم واجهة برمجة تطبيقات REST بدلاً من "قائمة انتظار الأحداث" على سبيل المثال.
مع ظهور شعبية استخدام الخدمات الصغيرة ، تسعى REST API إلى أن تكون صغيرة قدر الإمكان وتؤدي إلى أقل عدد ممكن من العمليات. وهذا يستلزم أن يزداد عدد نقاط النهاية في واجهة برمجة التطبيقات المطورة بما يتناسب مع عدد الخدمات المصغرة ، ولكل إجراء بسيط ستكون هناك نقطة نهاية خاصة بها. على سبيل المثال ، من أجل تغيير بيانات المستخدم في قاعدة البيانات ، سيتم استدعاء / user / أسلوب البحث أولاً للعثور على هوية المستخدم التي نحتاجها ، وعندها فقط سيتم استدعاء طريقة / user / update مع المعلمة التي يتم إرجاعها إلينا قبل هذا المعرف ، بدلاً من ذلك من أجل تنفيذ هذه العملية (ملاحظة إد.)
نعم ، يجب أن تكون واجهات برمجة تطبيقات REST سريعة ، ويجب أن تكون سريعة!
أيضًا ، عند إنشاء تطبيق محمّل بدرجة عالية باستخدام واجهة برمجة تطبيقات REST ، يستخدمون بشكل متزايد نمط الخدمات الصغيرة. هذه التطبيقات مبنية على بوابات API. في الواقع ، تعد واجهة برمجة تطبيقات Gateway عبارة عن خادم وكيل يصل إليه المستخدم ، ويصل هذا الخادم الوكيل بالفعل إلى الخدمة الصغيرة الأقل تحميلًا. عادةً ما يحل Gateway API أيضًا المهام الصغيرة ، مثل:
- معالجة شهادة SSL
- تقاسم الحمل
- الترخيص والمصادقة
- التخزين المؤقت
- طلب ضغط المحتوى
- ...
ومع ذلك ، اكسبرس ثقيلة جدا وبطيئة.
Express رائع ومليء بالميزات ... ولكنه أيضًا ثقيل وبطيء في الاستخدام للأغراض الصغيرة ، مثل REST API في الخدمات الصغيرة
يعتمد أحدث إصدار من المكتبة (4.16.4) على 30 وحدة مدمجة فيها ، وأثناء عملية التطوير ، تتم إضافة حوالي 20 وحدة أخرى إلى هذه الوحدة ، مما يجعل التطبيق في نهاية المطاف ثقيلًا جدًا لاستخدامه كخدمة صغرى.

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


لا تُظهر القياسات الموضحة في الصورة الأخيرة أن Express بطيئًا بشكل عام ، فهي توضح أنك بحاجة إلى مضاعفة أداء المعالج من أجل إجراء عمليات بسيطة ... ونتيجة لذلك ، ستزداد الدفعة الشهرية لاستخدام AWS و Google Cloud و MS Azure أو أي خدمة سحابية أخرى تستخدمها ، وسيترجم هذا إلى حساب أكبر وغير معقول في كثير من الأحيان.
الخاتمة

هناك العديد من الطرق المختلفة لتطبيق REST API في Node.js ، فيما يلي الطرق المناسبة لك ، اعتمادًا على المهمة:
- إذا كنت بحاجة إلى الحد الأقصى من الأداء ، ولكن في نفس الوقت أقل التكاليف ، فإن Express ليس بالتأكيد ما تحتاجه. نلقي نظرة على Fastify .
- إذا كنت بحاجة إلى مكتبة صغيرة تحتوي على الحد الأدنى المطلوب من الوظائف ، فعليك بالتأكيد إلقاء نظرة على restify أو koa أو polka أو restana