דנו נגד נוד.ג'ס: ההשוואה שאף אחד לא ביקש אבל כולם צריכים

אוקי, אז תדמיינו את זה: השעה 11 בלילה, יש לי כוס קפה שהיא איכשהו גם קרה וגם רותחת (מיומנות שאני שולט בה), ואני גולש לתוך חור הארנב של JavaScript runtimes. כן, אני יודע, ערב שישי פראי, נכון? אבל היי, כשאתה מהנדס תוכנה, הרעיון שלך ל"בילוי" לפעמים כולל השוואה בין דנו ל-Node.js בזמן שהחתול שלך שופט אותך מהצד השני של החדר.

למעטע קצת על הרעיון הזה, אני מתעסק עם Node.js כבר שנים. זה כמו אותם בגדים שחוקים בארון שלך שאתה פשוט לא מצליח להיפטר מהם כי הם עדיין במצב (איכותי) עבודה. זה נוח, אבל לפעמים אתה חושב על לקנות כאלה דומים שהם טרנדיים בשוק — הגרסאות המשודרגות והחדשות, אתה יודע.

חוזרים לנושא המרכזי, נכנס Deno, היריב המודרני שכולם מדברים עליו. אחרי שנים של התרגלות ל-Node.js, זה רק אינסטינקט טבעי עבורי לחקור את האלמנט לעומק ולבדוק בעצמי אם הוא ראוי לכל ההייפ שסביבו או אם יש לו ריצה שווה או אפילו טובה יותר. אז, נפרק את זה כדי להבין את זה טוב יותר?

רשמים ראשוניים: מי בכלל נותן שמות לדברים האלה?

בחזרה לסוף שנות ה-2000, כאשר הטכנולוגיה הייתה עדיין infant, Node.js הייתה קיימת בתעשייה מאז 2009. בנויה על המנוע V8 של כרום, Node.js עזרה לנו לבנות אפליקציות ניתנות להרחבה באופן קבוע. אפשר להבין זאת כגרסה של Javascript, שהיא מאוד אמינה ומועדפת על ידי כולם בקהל.

בהערה האחרונה, דנו הושקה בשנת 2018. וכן, היא גם פותחה על ידי אותו אדם, ריאן דל, היוצר המקורי של Node.js הפופולרית. טוויסט plot, נכון? הוא חזר, ציין כל מה שהוא חשב שהוא טעה בו עם Node, ואז אמר, “תשמור לי את הקפה. אני אקבע את זה.” דנו נולדה עם אבטחה, פשטות ותכונות מודרניות בליבה שלה. ואם אתם תוהים לגבי השם… honestly אני לא יודע. אבל דנו הוא אנגרם של Node, אז יש את זה.

סיבוב 1: אבטחה

בואו נדבר על אבטחה כי אם אתם כמו אני, היה לכם לפחות רגע אחד של “אוי לא, חשפתי בטעות מפתח API”. (אנחנו לא מדברים על הפרויקט ההוא יותר.)

Node.js משאיר את הבטיחות על המפתח, מה שאומר שכדאי שתכיר את קבצי .env והרשאות — או שיהיה רע. דנו, לעומת זאת? זה כמו אחד מאותם חברים פרנואידים שיש לנו שדואגים לבדוק את המנעולים פעמיים. בכל מקרה, דנו, כברירת מחדל, פועל בתוך סנדבוקס מוגן שאינו מתיר לקוד שלך גישה לרשת, מערכת הקבצים, או אפילו למשתני הסביבה אלא אם ניתנה הרשאה מפורשת.

הנה דוגמה:

Node.js

JavaScript

 

Deno

JavaScript

 

אבל אם תנסה להריץ את הקוד של דנו בלי הרשאות, תקבל הודעת שגיאה גדולה:

JavaScript

 

כן, דנו לא מתעסק. תצטרך להעביר דגלים כמו --allow-write כשאתה מריץ את הסקריפט. האם זה קצת מעצבן? בטח. אבל האם זה מונע ממך לשחרר כאוס בטעות? בהחלט.

סיבוב 2: ביצועים

עכשיו, אני לא חיית מהירות, אבל כשמדובר בריצות, ביצועים חשובים. אתה רוצה שהאפליקציה שלך תענה מהר יותר מהחברים שלך כשאתה שואל, “מי רוצה פיצה?”

שני Node.js ו-Deno משתמשים במנוע V8, ולכן הם מהירים. אבל Deno כתוב ב־Rust, שנותן לו יתרון קל בביצועים ואמינות. תכונות הביטחון של הזיכרון של Rust והדגם של המרוצה הופכים אותו לחיה מתחת למנצח. עם זאת, Node.js קיים מזמן רב ואופטימיזציות הביצועים שלו עברו בדיקת קרב.

הרצתי כמה בדיקות בגלל, כמובן, נרד:

שרת HTTP בסיסי ב־Node.js:

JavaScript

 

שרת HTTP בסיסי ב־Deno:

JavaScript

 

התוצאה? Deno היה מעט יותר מהיר בטיפול בבקשות, אך אנחנו מדברים כאן על מילישניות. עבור רוב היישומים בעולם האמיתי, ההבדל לא יהיה שינוי משמעותי — אלא אם כן אתה מנסה לבנות את הדור הבא של טוויטר (או X? האם זה מה שאנחנו קוראים לזה עכשיו?).

סיבוב 3: חווית מפתח

סבבה, חלק זה הרים אותי חזק. אם השתמשת ב־Node.js, אתה יודע ש־npm הוא הדם החי של הפרויקט שלך. זה הדרך שבה אתה מתקין חבילות, ניהל מותגים, ולפעמים אתה צועק על המסך שלך כאשר node_modules צומח ל־2 ג'יגה־בייט.

Deno אמר, "לא, אנחנו לא עושים npm כאן." במקום זאת, הוא משתמש במערכת מודולים מפוזרת. אתה מייבא מודולים ישירות דרך כתובות URL, כמו זו:

JavaScript

 

בתחילה, חשבתי, "מה?" אבל אז הבנתי כמה זה מגניב. אין עוד תיקיות node_modules מוצפות! אין עוד דאגה לגבי אי התאמת גרסאות חבילות! רק יבואים נקיים וישירים. עדיין, אני מודה: התגעגעתי לנוחות של npm ולמגוון המרהיב של חבילות שהוא מציע. רגילות ישנות קשות למות.

השוואה מהירה

כאן ניתן לראות בצד אחד את ההבדלים בתחביר וסגנון בין Deno ו-Node.js:

קריאת קובץ

Node.js:

JavaScript

 

Deno:

JavaScript

 

ביצוע בקשת HTTP

Node.js (באמצעות axios):

JavaScript

 

Deno (שימוש ב-Fetch מובנה):

JavaScript

 

אז, מה כדאי לבחור?

נקח זמן לנתח יותר. כך שבהנחה שאתה עמוק בעבודה על פרויקטים ב-Node.js, שקול את העדיפות שלך; אין צורך להחליף אם הכל רץ טוב. Node.js הוא כיום בוגר ויש לו אקוסיסטמה רחבה, והוא יכול לעשות את כל העבודות. אך, אם ברצונך להתחיל מחדש או לבנות משהו שמדגיש אספקטים של בטיחות, Deno שווה ערך לשקול. זה דומה לבנוי של Node, בן דוד מודרני יותר שמקשיב ללהקות אינדי לפני שהן מפורסמות.

בשבילי? כנראה אשמשיך לשחק עם שניהם. Node.js מרגיש כמו הבית בשלב זה, אך ל-Deno יש את המשיכה של צעצוע חדש ומבריק. ומה עוד, אני מושך אכן לרעיון כתיבת קוד שמבטיח יותר מהגזמת עתיד.

עם כל זה מחוץ לראש שלי, עכשיו אני צריך להזיז ולנקות את המסך שלי כי הוא כרגע תפוס בערך ב-90% תמונות מסך של התראות שגיאה וקוד אקראי. מקרה קלאסי, נכון?

תור שלך!

האם ניסית את דנו כבר, או שאתה נשאר עם Node.js? שתף את המחשבות שלך למטה – אני תמיד פתוח לדיון טכנולוגי טוב (נקודות בונוס אם זה כולל ממים).

Source:
https://dzone.com/articles/deno-vs-nodejs-the-showdown-nobody-asked-for