قد يكون Node.js راسخًا ، لكن لا تتغاضى عن Deno ، وهو إطار عمل مشابه من نفس المطور.

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

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

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

ميزات العقدة ودينو

بعد ما يقرب من تسع سنوات من إطلاق Node ، أعلن مطورها ، Ryan Dahl ، عن مشروع جديد: Deno. حيث كانت Node ذات يوم هي الخيار الوحيد لجافا سكريبت من جانب الخادم ، فقد أعطانا Deno بديلاً.

Node.js و Deno متشابهان تمامًا من نواح كثيرة. تحدث غالبية الاختلافات بين الاثنين تحت الغطاء. حيث يعمل Node على محرك V8 JavaScript ، يعمل Deno فوق محرك مكتوب بشكل مخصص مبني في Rust مع تركيز قوي على الأداء.

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

instagram viewer

واردات الوحدة: CommonJS vs. ES

يستخدم Node.js الوحدات النمطية CommonJS افتراضيًا مع بناء الجملة يتطلب (). تسمح لك Node بتغيير هذا عن طريق تغيير ملفات التكوين الخاصة بك لاستخدام وحدات ECMAScript مع بناء جملة import () بدلاً من ذلك إذا رغبوا في ذلك.

// هذا استيراد صالح للوحدة النمطية CommonJS في Node.js
فار _ = يتطلب("لوداش");

// هذا استيراد صالح لوحدة ECMAScript Module في Node.js
يستورد _ من"لوداش";

هناك بعض قابلية التشغيل البيني المحدودة بين نوعي تحميل وحدة ES مع بعض وحدات ECMAScript القادرة على التضمين باستخدام بناء الجملة يتطلب (). يتعامل كل نوع استيراد مع الوحدات بشكل مختلف قليلاً ، ولكن سيعمل أي منهما في معظم الحالات.

يتيح لك هذا اختيار المنهجية المفضلة لديك لتضمين الوحدات الخارجية عند إنشاء مشروع.

يتبع Deno نهجًا مختلفًا عندما يتعلق الأمر بتضمين الوحدات الخارجية في المشروع. يستخدم Deno صيغة التضمين () لجميع الوحدات ، ومع ذلك ، على عكس استيراد Node ، يمكن أن تأتي الوحدات النمطية المستوردة في Deno من أي مكان. يمكن أن تتضمن هذه المواقع حتى شبكات توصيل المحتوى عن بُعد (CDNs).

// هذا بيان استيراد صالح في Deno
يستورد" https://deno.land/x/[email protected]/dist/lodash.js";

يمكّنك هذا من استيراد التبعيات من أي مكان ، محليًا كان أم بعيدًا ، مما يوفر قدرًا أكبر من المرونة. إذا كنت تفضل العمل مع بناء جملة الطلب التقليدي من Node.js ، فيمكنك كتابة وظيفة polyfill الخاصة بك في Deno كحل بديل.

دعم كود TypeScript

شهدت TypeScript نموًا متزايدًا في شعبيتها على مدار السنوات القليلة الماضية ، مع عدم وجود علامات على التباطؤ في أي وقت قريبًا. أثبت جلب ديناميكيات التعليمات البرمجية الآمنة من النوع إلى JavaScript أنه مسعى ناجح للغاية.

اليوم ، يعد إعداد مشروع TypeScript جديد ، أو تحويل مشروع Node.js موجود إلى TypeScript أمرًا بسيطًا ، إذا كان يستغرق وقتًا طويلاً إلى حد ما.

أصبحت إضافة دعم TypeScript شائعة بما يكفي لأن معظم الأطر الحديثة لديها الآن شكل من أشكال دعم TypeScript. احتل Angular الصدارة ، مع دعم TypeScript خارج الصندوق. حتى اليوم يحتوي React على طرق لإعداد دعم TypeScript.

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

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

الفحص لإنشاء كود أنظف

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

اتخذ Deno مسارًا مختلفًا قليلاً في تنسيق التعليمات البرمجية ، حيث يأتي مع حل الفحص المدمج الخاص به لملفات .js و .ts و .md. سيؤدي تشغيل الأمر "deno fmt" إلى تنسيق أي ملفات في دليل العمل الحالي تلقائيًا.

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

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

إدارة الحزم

مدير حزم العقدة (npm) معروف جدًا بين المطورين المعاصرين. بناءً على نجاح الأنظمة المماثلة مثل Python’s Pip و Ruby’s RubyGems ، اكتسبت npm شعبية بسرعة.

تؤدي المخاوف المستمرة إلى تطوير مديرين متنافسين ، مثل pNPm و Yarn. هناك بعض المواقف التي قد تختار فيها التثبيت والاستخدام العديد من مديري الحزم مع Node.

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

يتيح لك Npm نشر حزمك الخاصة، مما أدى إلى مكتبة كبيرة بشكل مذهل.

اتخذ Deno نهجًا مختلفًا تمامًا لإدارة الحزم. ليس لديها ، ولا تتطلب ، نظام إدارة الحزم. بدلاً من ذلك ، يسمح Deno بالاستيراد المباشر للمكتبات الخارجية ليس فقط من نظام المطور ، ولكن من أي موقع يقبل طلبات HTTP.

يتيح لك ذلك استيراد المكتبات من مستودع Deno ، أو أي CDN عبر الإنترنت ، مباشرةً من قاعدة الرموز الخاصة بهم.

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

مشاركة المجتمع في Node and Deno

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

المنصة نفسها مفتوحة المصدر بالكامل ، وتديرها مؤسسة OpenJS والعديد من المساهمين.

تم إصدار Deno في عام 2018 ، بعد ما يقرب من 9 سنوات من Node. تم تطويره بشكل أساسي من قبل Ryan Dahl لمعالجة المخاوف والأسف التي كان يعاني منها مع تنفيذه Node. اليوم ، Deno أيضًا مفتوح المصدر بموجب ترخيص MIT.

مع وجود الكثير من المساهمين ، ومستودع خاص به متنامٍ ، شهد دينو اهتمامًا كبيرًا من المجتمع.

مخاوف أداء الإطارين

بالنسبة للمبرمجين المهتمين بفروق الأداء النسبية بين الإطارين ، هناك فرق بسيط بين الاثنين. محرك Deno المخصص المكتوب بلغة Rust يتراكب مع الإطار الأساسي الذي لا يزال محرك V8. في النهاية ، يمكن مقارنة كل من Deno و Node في جميع الحالات تقريبًا من حيث الأداء.

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

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

Node vs Deno: أيهما الخيار الصحيح؟

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

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