(javascript server-side (node.js - هل تستعملها؟ ولما؟
السلام عليكم.
كما لا يخفى على متابعي توجهات الويب أن javascript بدأت تنتشر بشكل كبير لكل من جهة المستخدم (client-side) ومن جهة الخادم أيضا (server-side). في هذه المساهمة دعونا نعرج على js المستخدمة من جهة الخادم، هل سبق و أن جربتها سواء في أمور عابرة (تجارب و ما شابه) أو في مشاريع حقيقية؟ هل حققت لك مرادك؟ وما هي أبرز الأسباب التي جعلتك تستعملها؟
شخصيا، استعملتها في تجارب عابرة فقط (بغرض استكشاف قدراتها) وكانت أغلب إن لم تكن كل التجارب ناجحة (التجارب كانت تعمل تحت
و
http://phantomjs.org/).ومما دفعني و قد يدفعني مستقبلا لاستعمالها (أتكلم عن node.js خصوصا):
اللغة نفسها: نعم فكل من client-side و server-side سواء ولا يوجد أي اختلاف في syntax.
مساق حدثيا (event-driven) : وهو باختصار أن يكون مجرى (flow) برنامجك مساقا بالأحداث وليس فقط بتتابع الخطوات. للاستزادة (
و لمعرفة الفرق (
http://en.wikipedia.org/wik...واجهة برمجية (API) ذات مستوى منخفض (low-level) : هذا يعني إمكانيات عديدة وتحكم أكبر (هناك 35 وحدة (module) مختلفة منها الخاص بالتعامل مع الملفات و منها الخاص بالتعامل مع HTTP و أكثر ...)
أطر العمل (frameworks) : هناك العديد من أطر العمل التي تساعدك في تطوير تطبيقك و تنظيمه بشكل رائع. أذكر منها
السرعة، قوة التحمل وقابلية التوسيع (scalable): السرعة. أحد أهم العوامل في أي تطبيق ويب اليوم، وهذا ما وجدته في node.js فاختبارات الأداء تبين مدى تفوقه على أقرانه. من جهة أخرى قوة التحمل كبير حقا وتصل إلى الآلاف من الطلبات المتوازية (parallel) في الثانية! ويمكنك دفع هذه القدرة لمدى أبعد بزيادة العتاد (أو كما يسمونهم cluster).
الوقت الفعلي (real-time) : معظمنا جرب تطبيقات ويب تمتع بخاصية الوقت الفعلي كـ Gmail و ما شابه. شخصيا عند توفر هذه الخاصية في أي تطبيق ويب يجعلني هذا مرتاحا و معجبا بالتطبيق! يمكنك أن تضيف هذه الخاصية إلى تطبيقك باستعمال
- مجتمع كبير : تماما مثل المجتمعات الأخرى ستجد العديد من الإضافات، المواضيع و الحيل التي تساعدك في مشوارك.
شاركنا برأيك و أسبابك!
node.js و لغة Scala و Go أيضاً من أكثر الأمور التي أثارت اهتمامي بالفترة الأخيرة ولقد اطلعت عليهم وجربت كتابة بعض الأكواد فيهم وبدأت التفكير جدياً باستخدام احداهم في أحد المشاريع القادمة. على الأرجح اختياري سيقع على node.js للأسباب التالية:
لن أحتاج لتعلم لغة برمجة جديدة كلياً وأظن أي شخص برمج باستخدام جافاسركبت سابقاً يستطيع برمجة تطبيق ويب باستخدام node.js خلال بضعة ساعات فقط وهذا أمر رائع حقاً فأنا لن أضيع الكثير من الوقت بتعلم لغة برمجة جديدة وسأحافظ على نفس سرعة الانتاجية تقريباً.
مجتمع node.js كبير جداً.. أجده أكبر من مجتمع لغة Go و Scala ويتطور بشكل أسرع أيضاً وهذا شيء طبيعي لأن معظم مطوري الويب يجيدون JavaScript بالفعل ولا يحتاجون لتعلم لغة برمجة جديدة وهذه برأيي ميزة node.js الأساسية.
المكتبات التي يوفرها node.js لتطوير الويب تحديداً كثيرة ومقارنة بعمره تفاجأت من عددها خصوصاً مع وجود نظام ادارة حزم متطور مثل npm.. تقريباً كل شيء أحتاجه موجود.
السرعة والأداء كونه event-driven كما ذكرت أنت.. أنا أؤمن أن السرعة في الأداء تتعلق أكثر بطريقة البرمجة عوضاً عن اللغة بحد ذاتها لكني أجد أن node.js هو موازنة جيدة بين السرعة بالانتاجية والأداء (
هذا طبعاً لا يعني أن node.js يتفوق بكل شيء على لغة مثل Scala فهي الأخرى ممتازة وتستفيد بشكل كبير من JVM ومكتبات لغة جافا القوية لكن لتطوير تطبيقات الويب تحديداً أرى أن node.js يتفوق على Scala بسهولته وخيار جيد جداً وسأطلق مشروع باستخدامه قريباً ان شاء الله.
تماما، فعند تحولي من front-end إلى back-end والعكس لا أشعر بتغير الجو البرمجي خاصة اذا استعملت نفس المكتبات كـ underscore وما شابهها...
node.js ليس الأفضل بكل تأكيد لكنه يوفر بيئة تساعدك على الإنتاجية، السرعة والأداء صحيح متعلق جزء منها بطريقة البرمجة لكن توفر API بمستوى منخفض كما ذكرت سابقا سيساعدك على دفع الأداء لأقصى الحدود.
شكرا لتعقيبك. بعد أن تطلق مشروعك الجديد شاركنا من فضلك بخبرتك!
التعليقات