41

(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...

و لمعرفة الفرق (

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

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

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

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

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

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


18

نعم نستخدمها في مشروع منصة اجتماعية عمومية هي MicroCommunity.

/wiki/API

أهم خاصية ثورية متعلقة بـ Node هي الإدخال والإخراج غير المتزامن. وإمكانية التعامل مع الطلبات من خلال نيسب واحد Single Threaded، بدل حوض النياسب Threads pool. وهذا هو سبب الأداء القوي والمرتفع الذي أشرت له.

الصعوبة الأساسية في Node هي كتابة القسم الخاص بـ Business Logic في المخدم، حيث تجد نفسك مضطراً لكتابته بشكل غير متزامن.

السبب الأساسي الذي دفعنا لكتابة المشروع باستخدام Node هو أننا شعرنا بقوة المنصة، ولأن طبيعة المشروع الخاص بنا هو عبارة عن منصة قد يكون لها أهمية مستقبلية، فوجدنا أن تطويرها على منصة متقدمة هو الخيار الأفضل.

السبب الأخير هو أن Node تتكامل بسهولة أكثر مع طرق التطوير المتسارعة لاسيما على صعيد الواجهات الأمامية Front-end. وربما أهم مثال على هذا الكلام Yoeman وGrunt.

أوافقك الرأي، node.js منصة قوية وستزداد قوة بفضل مجتمعها ووتيرة تطويرها المتسارعة.

مشروع جميل بالمناسبة :)

نعم... ولكن التحدي هو الصعوبة. يعني رغم أنني راض جداً عن كل ما قدمته Node لتصبح المنصة قوية ومناسبة لبناء منصات اجتماعية (وهو هدف المشروع)... ولكني قلق أن موضوع الصعوبة قد يحد من المطورين الذين يستخدمون هذه المنصة. هل عندك فكرة عن حجم المستخدمين العرب؟

ليست صعبة بدرجة كبيرة، صحيح أنها تحتاج مبرمج JS متمرن لكن يستطيع مبرمج متوسط الخبرة أن يتنفس قليلا :)

حقيقة لا أملك أي فكرة حول حجم المستخدمين العرب لهذه المنصة!

أخي هل لديك مرجع جيد للقراءة للتوسع بفهمها والقراءة عنها بشكل افضل بصراحة node.js تدور في راسي منذوا اكثر من ثلاثة ايام وخاصة بعدما تكلمت مع احد زملاءك في وكي لوجيا وذكرها امامي.

16

قمنا بتصوير مجموعة من الفيديوهات باللغة العربية في ويكيتيكي، أتمنى أن تجد فيها الفائدة

لكن بشكل أساسي من الصعب جداً أن تتعلم وتتعمق بـ Node إلا إذا كنت تعرف ما هو المشروع الذي ترغب بالاستمرار به، لأنه يوجد عدة اتجاهات للتطوير التي ممكن أن تدخل بها حسب مشروعك

هذا الرابط مفيد أيضاً: دليل تقنيات جافاسكربت المعاصرة - ويكيتيكي

مرجعها الأصلي :

أو من netuts (كخيار ثانوي)

قرأت الكتب التالية:

  • Professional Node.js: Building Javascript Based Scalable Software

  • Hands-on Node.js

  • The Node Beginner Book

الأول والثاني لنفس المؤلف. اذا اشتريت الأول فلا حاجة لتشتري غيره فهو أفضلهم.