مؤخرا كثرات الهضرة على واحد المشروع سميتو Bun
اللي هو عبارة عن Javascript runtime
بحال Nodejs
و Deno
, لكن أسرع بكثير حسب الأقوال ديال صاحب المشروع Jarred Sumner
. المقارنة كاينا في الموقع الرسمي ديال Bun
بينو و بين Nodejs
و Deno
, كاتبين باللي Bun
أسرع ب 3 مرات و أكثر.
شنو هو 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
:
-
Bun كايستخدم
javascriptcore
عكس Nodejs و Deno اللي كايستخدموV8
. -
Bun مقاد بلغة منخفضة المستوى إسمها ZIG ( خرجات للوجود سنة 2016), عكس Nodejs اللي مقاد ب
C
و++C
و Deno اللي مقاد ب++C
وRust
. -
كايقبل حتا
Typescript
بلا ما تحتاج تثبتtypescript compiler
عكس Nodejs.
مميزات Bun :
-
كايقبل
Top level await
أي أنه بإمكانك تستخدمawait
بدون الحاجة لasync function
. -
بإمكانك تستعمل
npm packages
أي أنه أي مشروع مقاد ب Nodejs بإمكانك تشغلو بإستخدام Bun. -
Bun كايقرا حتا
JSX
. -
Bun كايقوم بتحميل ل
environment variables
تلقائيا من ملفenv.
-
كايجي ب
Test runner
بحالJest
مبني فيه. -
كايجي ب
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 ... .