ما هو Bun و ما الفرق بينه و بين Nodejs و Deno

ما هو Bun و ما الفرق بينه و بين Nodejs و Deno

13 يوليوز 2022|دقيقتين قراءة

مؤخرا كثرات الهضرة على واحد المشروع سميتو Bun اللي هو عبارة عن Javascript runtime بحال Nodejs و Deno , لكن أسرع بكثير حسب الأقوال ديال صاحب المشروع Jarred Sumner. المقارنة كاينا في الموقع الرسمي ديال Bun بينو و بين Nodejs و Deno , كاتبين باللي Bun أسرع ب 3 مرات و أكثر.

bun

شنو هو Javascript runtime :

Javascript runtime هو بيئة كاتجي بالعديد من الأدوات اللي كاتمكنا من إنشاء و تشغيل التطبيقات ديال javascript خارج المتصفح أي في server عن طريق ما يسمى ب Javascript engine أي المحرك اللي كايقوم بتحويل Javascript إلى اللغة اللي كايفهمها الحاسوب.

Nodejs كايستخدم Javascript engine سميتو V8 , هو نفسو اللي كاين في Google chrome. كاينين Javascript engines أخرين من غير V8 منهم SpiderMonkey المستخدم في متصفح Firefox و JavaScriptCore المستخدم في متصفح Safari.

أول javascript runtime خرج للوجود كان هو Nodejs في 2009 , قبل ظهور هاد الأخير , كان Javascript كايخدم فقط في المتصفحات أي أنه إلى بغيتي تخدم ل Backend ديال الموقع الإلكتروني خاصك شي لغة مثل PHP و غيرها.

الأن بفضل Nodejs بإمكانا نشؤو تطبيقات Fullstack بإستعمال javascript فقط.

طريقة تثبيت Bun :

التثبيت سهل جدا, كل ما عليك هو تحط هاد السطر في Terminal :

curl https://bun.sh/install | bash

لكن إلى كانت عندك Windows غايخصك تثبت WSL عاد غايمكلك تثبت Bun.

الفرق بين Bun و Nodejs و Deno :

  1. Bun كايستخدم javascriptcore عكس Nodejs و Deno اللي كايستخدمو V8 .

  2. Bun مقاد بلغة منخفضة المستوى إسمها ZIG ( خرجات للوجود سنة 2016), عكس Nodejs اللي مقاد ب C و ++C و Deno اللي مقاد ب ++C و Rust.

  3. كايقبل حتا Typescript بلا ما تحتاج تثبت typescript compiler عكس Nodejs.

مميزات Bun :

  1. كايقبل Top level await أي أنه بإمكانك تستخدم await بدون الحاجة ل async function.

  2. بإمكانك تستعمل npm packages أي أنه أي مشروع مقاد ب Nodejs بإمكانك تشغلو بإستخدام Bun.

  3. Bun كايقرا حتا JSX.

  4. Bun كايقوم بتحميل ل environment variables تلقائيا من ملف env.

  5. كايجي ب Test runner بحال Jest مبني فيه.

  6. كايجي ب Web APIs مبنين فيه , بحال fetch و webSockets و ReadableStream ...

مثال إنشاء Server بإستخدام Bun :

أنشئ ملف كاينتهي ب js. و وضع فيه هاد الكود :

// http.js export default { port: 3000, fetch(request) { return new Response("Welcome to Bun!"); }, };

ثم شغل الملف عن طريق كتابة bun run متبوعة بإسم الملف في Terminal :

bun run http.js

خلاصة :

النقطة اللي كايتفوق فيها Bun على Deno و اللي كانظن هي النقطة اللي غاتخلي Bun إدير بلاصتو في مجتمع المبرمجين, هي أنه كايقبل npm packages.

npm كبرات بزاف لدرجة أن أي حاجة بغيتيها غاتلقاها, رغم المشاكل الأمنية ديال npm إلا أن الإستغناء عنها شبه مستحيل , خصوصا أن جميع المشاريع اللي مقادين ب Nodejs كايستخدمو npm packages.

Bun الأن في النسخة التجريبية, مزال ما خرجش إصدار رسمي لكن كانصحكوم تثبتوه و تجربو الخدمة بيه و تقارنو ما بينو و بين Nodejs ... .