السلام عليكم.
كما لا يخفى على متابعي توجهات الويب أن 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 بمستوى منخفض كما ذكرت سابقا سيساعدك على دفع الأداء لأقصى الحدود.
شكرا لتعقيبك. بعد أن تطلق مشروعك الجديد شاركنا من فضلك بخبرتك!
نعم نستخدمها في مشروع منصة اجتماعية عمومية هي MicroCommunity.
/wiki/API
أهم خاصية ثورية متعلقة بـ Node هي الإدخال والإخراج غير المتزامن. وإمكانية التعامل مع الطلبات من خلال نيسب واحد Single Threaded، بدل حوض النياسب Threads pool. وهذا هو سبب الأداء القوي والمرتفع الذي أشرت له.
الصعوبة الأساسية في Node هي كتابة القسم الخاص بـ Business Logic في المخدم، حيث تجد نفسك مضطراً لكتابته بشكل غير متزامن.
السبب الأساسي الذي دفعنا لكتابة المشروع باستخدام Node هو أننا شعرنا بقوة المنصة، ولأن طبيعة المشروع الخاص بنا هو عبارة عن منصة قد يكون لها أهمية مستقبلية، فوجدنا أن تطويرها على منصة متقدمة هو الخيار الأفضل.
السبب الأخير هو أن Node تتكامل بسهولة أكثر مع طرق التطوير المتسارعة لاسيما على صعيد الواجهات الأمامية Front-end. وربما أهم مثال على هذا الكلام Yoeman وGrunt.
أوافقك الرأي، node.js منصة قوية وستزداد قوة بفضل مجتمعها ووتيرة تطويرها المتسارعة.
مشروع جميل بالمناسبة :)
نعم... ولكن التحدي هو الصعوبة. يعني رغم أنني راض جداً عن كل ما قدمته Node لتصبح المنصة قوية ومناسبة لبناء منصات اجتماعية (وهو هدف المشروع)... ولكني قلق أن موضوع الصعوبة قد يحد من المطورين الذين يستخدمون هذه المنصة. هل عندك فكرة عن حجم المستخدمين العرب؟
أخي هل لديك مرجع جيد للقراءة للتوسع بفهمها والقراءة عنها بشكل افضل بصراحة node.js تدور في راسي منذوا اكثر من ثلاثة ايام وخاصة بعدما تكلمت مع احد زملاءك في وكي لوجيا وذكرها امامي.
قمنا بتصوير مجموعة من الفيديوهات باللغة العربية في ويكيتيكي، أتمنى أن تجد فيها الفائدة
لكن بشكل أساسي من الصعب جداً أن تتعلم وتتعمق بـ Node إلا إذا كنت تعرف ما هو المشروع الذي ترغب بالاستمرار به، لأنه يوجد عدة اتجاهات للتطوير التي ممكن أن تدخل بها حسب مشروعك
هذا الرابط مفيد أيضاً: دليل تقنيات جافاسكربت المعاصرة - ويكيتيكي
لغة جافاسكريبت لم تنشئ للتعامل مع الـ bytes فهي أساساً للويب ويمكنها التعامل بشكل جيد مع النصوص (Strings). لكن رغم ذلك node.js يضيف على جافاسكريبت الكثير من الأمور واحداها Buffer class التي تسمح بالتعامل مع المعلومات على مستوى البايت بشكل ممتاز وباستخدامه يمكن برمجة أي تطبيق.
بخصوص استخدام Ruby أو Python لبرمجة تطبيقات تعتمد على مبدء event-driven فهو أمر ممكن باستخدام مكتبات خاصة ولقد اطلعت سابقاً على Event Machine في روبي قبل node.js لكن المشكلة هنا أن أغلب مكتبات هذه اللغات الأخرى لم تبرمج لتتعامل باسلوب event-driven عكس نود الذي بني كل شيء فيه على هذا الأساس. هذا يعني في روبي وبايثون أنت تحتاج لمكتبة برمجت خصيصاً لتتوافق مع المكتبة التي تستخدمها لتوفير event-driven وهذا قد يسبب مشاكل غير متوقعة.
أنا أؤمن باستخدام أفضل وسيلة لأداء المهمة. لغة جافاسكريبت بها عيوب وليس الخيار الأمثل لانجاز كل شيء، كذلك لغة بايثون وروبي وسي وحتى جافا. أنا لن أبرمج تطبيق ويب باستخدام C ولن أستخدم جافاسكريبت للتلاعب بالـ bytes.
nodjs مهمة لكل مبرمج javascript محترف
يمكن الاعتماد عليها في الكثير من الامور لا املك الكثير من المسطلحات التقنية العربية و لكنك ستجد ما احاول ان اعبر عنه في هذا الموقع
مقال جميل اخي الكريم.
انا بدأت من فترة التعلم على node.js وكتبت بعض الامثلة من يحب ان يستفيد و يتعرف على المزيد فالرابط هنا :
مقال مميز فيه كل ما تريد معرفته عن بيئة node.js وكيف تعمل على السيرفر وما يميزها عن غيرها من منصات برمجة الويب