5 مطالبات لـ Deno

صورة

مقدمة


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

دينو - قاتل NodeJs


هذا ليس صحيحا. وبهذه الطريقة يتم الترويج لها فقط من قبل "شهود دينو" أو المعجبين المجانين أو المترجمين المتعطشين. على حد علمي ، حتى رايان دال نفسه (مؤلف دينو) لا يضع تطوره كبديل أو بديل لـ NodeJs. بدلا من ذلك ، رؤيته هي "ما قد يكون نفس NodeJs في المستقبل". المفهوم ، إذا كنت تريد (نحن لا نوبخ مفاهيم السيارات أو الهواتف الذكية بسبب عدم ملاءمتها للواقع الحديث). من وجهة نظر ريان ، يواجه NodeJs بعض المشاكل. وأظهر للمجتمع فكرة معينة عن كيفية حل هذه المشاكل. ويمكنك المشاركة في هذا. تعال إلى GitHub الآن ووصف المشاكل المعمارية التي تراها. ناقشهم. توصل إلى حلول.

لا أعتقد أن دينو سيحل محل NodeJs. ولكن يمكن أن يصبح بالنسبة له ما أصبح TypeScript لـ JavaScript.

الاستيراد عن طريق URL


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

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

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

ولكن كيف أعمل الآن بدون الإنترنت؟


كما لو كنت تعمل مع NodeJs. ما دينو ، أن NodeJs يقوم بتنزيل التبعيات في دليل منفصل. فقط في NodeJs تقوم بتشغيل هذا npm install، و Deno يقوم بذلك تلقائيًا في المرة الأولى التي تقوم فيها بتشغيله .

يبدو مثيرا للاهتمام ، لكني أرفض!


ليس هناك أى مشكلة. هناك شيء من هذا القبيل - استيراد الخرائط . ودينو يدعمه ، وإن لم يكن بشكل كامل. وهكذا ، يمكنك وصف المرادفات لجميع التبعيات من خلال المجيء إلى التناظرية package.json. ولكن لن تقتصر على هذا:

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

    {
       "imports": {
          "moment/": [
             "https://deno.land/x/moment/",
             "https://raw.githubusercontent.com/lisniuse/deno_moment/master/"
          ]
       }
    }
    

بدون npm ، لا يمكنني تقديم أداة وحدة التحكم عالميًا!


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

شعور غريب deja vu


ولا يخلو من الدقة. Deno هو نفس NodeJs . أرى القليل من الاختلافات:

  • رفض دينو التوافق العكسي. ما سمح له بإدراك الأشياء نفسها ، ليس باستخدام دراجته الخاصة ، ولكن الدراجة التي وصفها في مواصفات اللغة. أنا متأكد من أنه إذا ظهر نوع من "العقدة التالية" دون توافق عكسي ، فسوف نحصل على نفس الشيء الذي يقدمه Deno. وتتحرك NodeJs تدريجيًا في هذا الاتجاه: يتم تنفيذ جميع شرائح ES الجديدة (مثل وحدات ES وانتظار المستوى الأعلى وما إلى ذلك) تدريجيًا في NodeJs.
  • رفض القائمة العامة للتبعيات. يمكن أن يكون هذا زائد أو ناقص. يعتمد ذلك على الحالات المحددة. ولكن لا يمكن إنكار أن مثل هذه الهندسة لها الحق في الوجود.
  • الفكرة هي منع البرنامج النصي من الوصول إلى النظام دون إذن صريح.

هذا كل الاختلافات في رأيي. لذلك لا أرى أي سبب يكره دينو. هو أن شعبه العلاقات العامة العدوانية :)

All Articles