السلام عليكم.

كما لا يخفى على متابعي توجهات الويب أن javascript بدأت تنتشر بشكل كبير لكل من جهة المستخدم (client-side) ومن جهة الخادم أيضا (server-side). في هذه المساهمة دعونا نعرج على js المستخدمة من جهة الخادم، هل سبق و أن جربتها سواء في أمور عابرة (تجارب و ما شابه) أو في مشاريع حقيقية؟ هل حققت لك مرادك؟ وما هي أبرز الأسباب التي جعلتك تستعملها؟

شخصيا، استعملتها في تجارب عابرة فقط (بغرض استكشاف قدراتها) وكانت أغلب إن لم تكن كل التجارب ناجحة (التجارب كانت تعمل تحت http://nodejs.org/ و http://phantomjs.org/). ومما دفعني و قد يدفعني مستقبلا لاستعمالها (أتكلم عن node.js خصوصا):

  • اللغة نفسها: نعم فكل من client-side و server-side سواء ولا يوجد أي اختلاف في syntax.

  • مساق حدثيا (event-driven) : وهو باختصار أن يكون مجرى (flow) برنامجك مساقا بالأحداث وليس فقط بتتابع الخطوات. للاستزادة (http://en.wikipedia.org/wiki/Event-driven_programming) و لمعرفة الفرق (http://en.wikipedia.org/wiki/Comparison_of_programming_paradigms).

  • واجهة برمجية (API) ذات مستوى منخفض (low-level) : هذا يعني إمكانيات عديدة وتحكم أكبر (هناك 35 وحدة (module) مختلفة منها الخاص بالتعامل مع الملفات و منها الخاص بالتعامل مع HTTP و أكثر ...)

  • أطر العمل (frameworks) : هناك العديد من أطر العمل التي تساعدك في تطوير تطبيقك و تنظيمه بشكل رائع. أذكر منها http://expressjs.com/

  • السرعة، قوة التحمل وقابلية التوسيع (scalable): السرعة. أحد أهم العوامل في أي تطبيق ويب اليوم، وهذا ما وجدته في node.js فاختبارات الأداء تبين مدى تفوقه على أقرانه. من جهة أخرى قوة التحمل كبير حقا وتصل إلى الآلاف من الطلبات المتوازية (parallel) في الثانية! ويمكنك دفع هذه القدرة لمدى أبعد بزيادة العتاد (أو كما يسمونهم cluster).

  • الوقت الفعلي (real-time) : معظمنا جرب تطبيقات ويب تمتع بخاصية الوقت الفعلي كـ Gmail و ما شابه. شخصيا عند توفر هذه الخاصية في أي تطبيق ويب يجعلني هذا مرتاحا و معجبا بالتطبيق! يمكنك أن تضيف هذه الخاصية إلى تطبيقك باستعمال http://socket.io/

  • مجتمع كبير : تماما مثل المجتمعات الأخرى ستجد العديد من الإضافات، المواضيع و الحيل التي تساعدك في مشوارك.

شاركنا برأيك و أسبابك!