جافاسكريبت - كتابة تطبيقات الوقت الحقيقي باستخدام NodeJS
أتطلع لبناء تطبيقات ويب في الوقت الحقيقي باستخدام NodeJS. قادمًا من Rails، لقد وقعت في حب NodeJS وبرمجة JavaScript غير المتزامنة.
قم بإجراء بعض التجارب مع Node، ثم أثناء بحثي عن الأدوات والموارد للتعود عليها، شعرت بالإرهاق من كل الأشياء الموجودة هناك.
وجدت الكثير من المكتبات والمكونات هناك، وارتبكت إلى حد كبير حول كيفية بناء تطبيق ويب في الوقت الفعلي واسع النطاق مكتوب ومنفذ بشكل جيد.
لذا سيعمل التطبيق على NodeJS، باستخدام إطار العمل Express.
لقد قرأت عن knockout.js، مكتبة على جانب العميل لتوفير أشياء في الوقت الحقيقي مثل تحديث واجهة المستخدم تلقائيًا، وأظن أنني أستطيع دمجها مع jQuery. أيضًا، وجدت socket.io. يقول المؤلف: يهدف Socket.IO إلى جعل التطبيقات في الوقت الحقيقي ممكنة في كل متصفح وجهاز محمول، ممحوًا الفروقات بين آليات النقل المختلفة. إنه وقت حقيقي بدون قلق 100% بلغة JavaScript. إذن socket.io يتعلق بالتوافق. ماذا عن backbone.js؟ إلى أين يتجه؟
مع كل هذه الأشياء، شعرت بالصدمة. ماذا يجب أن أتعلم؟ أي الوحدات تستحق الدراسة؟ أنا أركز على NodeJS و Express لكن معظم الكتب والفيديوهات التعليمية تغطي نسخ قديمة من NodeJS. لذا فأنا أستند إلى الوثائق الرسمية له. الآن أنا هنا أطلب نصيحتك لتنظيم كل المعلومات المتاحة بطريقة ما. صحح لي إذا كانت افتراضاتي غير دقيقة، من فضلك أرشدني إلى الاتجاه الصحيح ولا تتردد في اقتراح أي وحدة أخرى قد تساعد في تعلمي.
شكراً مقدماً
الإجابة رقم 1
قد يكون من المفيد لك فصل مكتبات خادم node.js من جانب السيرفر (عن طريق npm وما إلى ذلك...) عن جميع مكتبات وتقنيات جانب العميل (المتصفح) مثل jquery وbackbone وknockout وما إلى ذلك عند التفكير في الأمر. حتى socket.io الذي يوفر اتصالًا دائمًا عبر السوكيت بين المتصفح والخادم (لتجنب الاستطلاع المستمر) لا يفرض أي تقنيات على جانب العميل تستخدمها.
ركز على كشف واجهة برمجة تطبيقات ويب قوية (مثال عشوائي) من الخادم الخاص بك، ويمكن تبديل تقنيات العميل أو تعزيزها وما إلى ذلك دون أي تأثير على الخادم. المكان الوحيد الذي يتقاطعان فيه هو إذا كنت تستخدم تقنية عرض مثل Jade. كما أنه من الممكن وجود فصل كامل حيث يكون الخادم مجرد تقديم ملفات العميل، ويكون العميل تطبيق جافاسكريبت أكثر كثافة (باستخدام knockout، jquery، إلخ...) يستدعي واجهة برمجة تطبيقات ويب جيدة من الخادم.
يحاول بعض الناس توحيد نماذج العميل والخادم - على سبيل المثال، هذه المقالة التي تستخدم Backbone و Node. يعتمد ذلك على كمية البيانات التي تعمل بها لتحديد ما إذا كان ذلك ممكنًا، لكنه بالفعل يربط بين العميل والخادم ويجعل الخادم ذا حالة، وهذا يمكن أن يكون له سلبيات (التوسع، يتطلب التوافق، إلخ...). شخصيًا، أصبح متحفِّظًا من كل هذه السحرية (الربط، الحالة، المزامنة، إلخ...). Node يدور حول الحفاظ على الأشياء بسيطة وخفيفة وسريعة. إنه خادم شبكة أماميًا سريع.
رأيي الشخصي (وقد يختلف البعض). ابدأ بـ Node على الخادم واختر التخزين الخاص بك (MongoDB إلخ...). صمم واجهة برمجة تطبيقات RESTful قوية (مع الوسائط الفائقة) - واجهة WebAPI جيدة بغض النظر عن العميل. ثم ابدأ بعميل أساسي باستخدام HTML/CSS/JS، وربما jQuery، وأضف أشياء مثل Knockout إلخ... مع توسع مهاراتك في العميل. هذا سيسمح لك باستبدال تقنيات العميل بشكل مستقل عن الخادم مع تغير الرياح التكنولوجية الجديدة (وستتغير بالتأكيد).
هذه هي سمة النظام المصمم بشكل جيد - القدرة على استبدال المكونات/الأنظمة الفرعية دون إعادة كتابة كل شيء :)
آمل أن يساعد ذلك في إزالة بعض الغموض :)
الإجابة رقم 2
قد ترغب في الاطلاع على Meteor إذا كنت تركز على تطبيقات جافاسكريبت في الوقت الحقيقي: http://meteor.com/