javascript - شرح - كيفية تحديد متى تستخدم Node.js؟




express shopping (12)

أنا جديد على هذا النوع من الأشياء ، ولكن في الآونة الأخيرة كنت أسمع الكثير عن مدى جودة Node.js مع الأخذ في الاعتبار كم أحب العمل مع jQuery و JavaScript بشكل عام ، لا يسعني إلا أن أتساءل عن كيفية تحديد وقت استخدام Node.js. تطبيق الويب الذي أفكر فيه هو شيء مثل Bitly - يأخذ بعض المحتوى ، Bitly الأرشيف.

من كل الواجبات المنزلية التي قمت بها في الأيام القليلة الماضية ، حصلت على المعلومات التالية. نود.جي إس

  • هي أداة سطر أوامر يمكن تشغيلها كخادم ويب عادي وتتيح تشغيل برامج جافا سكريبت واحدة
  • يستخدم محرك جافا سكريبت V8 الرائع
  • جيد جدا عندما تحتاج إلى القيام بأشياء عديدة في نفس الوقت
  • هو القائم على الحدث بحيث يمكن القيام بكل الأشياء الرائعة مثل Ajax على جانب الخادم
  • يتيح لنا مشاركة رمز بين المتصفح والخلفية
  • يتيح لنا التحدث مع MySQL

بعض المصادر التي صادفتها هي:

مع الأخذ في الاعتبار أن Node.js يمكن تشغيله خارج منطقة الجزاء في حالات EC2 في Amazon ، أحاول أن أفهم نوع المشاكل التي تتطلب Node.js على عكس أي من الملوك الأقوياء هناك مثل PHP ، Python و Ruby . أتفهم أنه يعتمد بالفعل على الخبرة التي يمتلكها المرء على لغة ما ، لكن سؤالي يقع في الفئة العامة التالية: متى نستخدم إطارًا معينًا وما نوع المشكلات التي تناسبها بشكل خاص؟


  1. العقدة رائعة للنماذج الأولية السريعة ولكنني لن استخدمها مرة أخرى لأي شيء معقد. قضيت 20 سنة في تطوير علاقة مع مترجم وأنا متأكد من تفويتها.

  2. العقدة مؤلمة بشكل خاص للحفاظ على الرمز الذي لم تقم بزيارته منذ فترة. تعد معلومات النوع وتجميع أخطاء الوقت المجمعة شيئًا جيدًا. لماذا رمي كل هذا؟ على ماذا؟ و dang ، عندما يذهب شيء جنوبًا إلى آثار المكدس في كثير من الأحيان غير مجدية تمامًا.


أسباب استخدام NodeJS:

  • يتم تشغيل جافا سكريبت ، بحيث يمكنك استخدام نفس اللغة على الخادم والعميل ، وحتى مشاركة بعض التعليمات البرمجية بينها (على سبيل المثال ، للتحقق من صحة النموذج ، أو لعرض وجهات النظر في أيٍّ من الطرفين).

  • يتسم نظام الأحداث single-threaded بالأحرف fast حتى عند التعامل مع الكثير من الطلبات في وقت واحد ، كما أنه بسيط مقارنة بالأطر التقليدية متعددة المهام لـ Java أو ROR.

  • مجموعة packages المتزايدة باستمرار والتي يمكن الوصول إليها من خلال الآلية الوقائية الوطنية ، بما في ذلك المكتبات / الوحدات النمطية التابعة للخادم والمزود ، بالإضافة إلى أدوات سطر الأوامر لتطوير الويب. تتم استضافة معظم هذه الأجهزة بشكل مريح على موقع github ، حيث يمكنك أحيانًا الإبلاغ عن مشكلة والعثور عليها في غضون ساعات! من اللطيف أن يكون كل شيء تحت سقف واحد ، مع إعداد تقارير عن القضايا القياسية والتشكيل السهل.

  • لقد أصبحت البيئة القياسية التي تستخدم في تشغيل الأدوات ذات الصلة بجافا سكريبت والأدوات الأخرى ذات الصلة بالشبكة ، بما في ذلك برامج تشغيل المهام ، والصانعات الصغيرة ، والمكياج ، والمعالجات ، والمعالجات التمهيدية ، والمعالجات ، ومعالجات التحليلات.

  • يبدو مناسبًا تمامًا للنماذج الأولية والتطوير السريع والتكرار السريع للمنتجات .

أسباب عدم استخدام NodeJS:

  • يتم تشغيل جافا سكريبت ، والتي لا يوجد لديها التحقق من نوع وقت التحويل البرمجي. بالنسبة لأنظمة السلامة المعقدة الكبيرة ، أو المشاريع ، بما في ذلك التعاون بين المنظمات المختلفة ، فإن اللغة التي تشجع على واجهات التعاقدية وتوفر التحقق من النوع الثابت قد توفر لك بعض وقت التصحيح ( والانفجارات ) على المدى الطويل. (على الرغم من أن JVM عالق بـ null ، لذا يرجى استخدام Haskell للمفاعلات النووية الخاصة بك.)

  • إضافة إلى ذلك ، فإن العديد من الحزم في الآلية الوقائية الوطنية هي قليلة الخام ، ولا تزال قيد التطوير السريع. بعض المكتبات للأطر القديمة خضعت لعقد من الاختبارات و bugfixing ، ومستقرة للغاية حتى الآن. لا يوجد لدى Npmjs.org آلية لتقييم الحزم ، الأمر الذي أدى إلى انتشار الحزم التي تؤدي إلى نفس الشيء تقريباً ، والتي لم يعد يتم الاحتفاظ بنسبة كبيرة منها.

  • المتداخلة رد الجحيم. (بالطبع هناك 20 حلول مختلفة لهذا ...)

  • يمكن للمجموعة المتزايدة باستمرار من الحزم جعل مشروع NodeJS يبدو مختلفًا جذريًا عن التالي. هناك تنوع كبير في عمليات التنفيذ بسبب العدد الهائل من الخيارات المتاحة (مثل Express / Sails.js / Meteor / Derby ). قد يؤدي ذلك أحيانًا إلى صعوبة قيام مطور جديد بالانتقال إلى مشروع عقدة. على النقيض من ذلك مع انضمام مطور Rails إلى مشروع حالي: يجب أن يكون قادرًا على التعرف على التطبيق بسرعة كبيرة ، نظرًا لأنه يتم تشجيع جميع تطبيقات Rails على استخدام بنية مشابهة .

  • يمكن التعامل مع الملفات يكون قليلا من الألم. الأشياء التي تافهة في لغات أخرى ، مثل قراءة سطر من ملف نصي ، هي غريبة بما فيه الكفاية مع Node.js أن هناك سؤال على ذلك مع upvotes 80+. لا توجد طريقة بسيطة لقراءة سجل واحد في كل مرة من ملف CSV . إلخ.

أنا أحب NodeJS ، فهو سريع والبرية وممتعة ، ولكن أنا قلق من أن لديها القليل من الاهتمام في إثبات الصحة-إثبات. دعونا نأمل أن نتمكن في نهاية المطاف من دمج أفضل ما في العالمين. أنا حريصة على رؤية ما سوف يحل محل عقدة في المستقبل ... :)


أهم الأسباب لبدء مشروعك القادم باستخدام العقدة ...

  • كل أروع الرجال في ذلك ... لذلك يجب أن تكون ممتعة.
  • يمكنك الاستراحة في المبرد والحصول على الكثير من مغامرات العود للتفاخر.
  • كنت pincher قرش عندما يتعلق الأمر بتكاليف استضافة السحابية.
  • تم القيام بذلك مع القضبان
  • أنت تكره نشر IIS
  • أصبح عملك القديم في مجال تكنولوجيا المعلومات باهتًا إلى حد ما وكنت تود أن تكون في بداية جديدة لامعة.

ماذا تتوقع ...

  • ستشعر بالأمان والأمان مع Express دون جميع bloatware الملقم الذي لم تكن بحاجة إليه.
  • يعمل مثل صاروخ وقياس جيد.
  • كنت تحلم به. قمت بتثبيته. تعد حزمة packages node package repo أكبر نظام بيئي للمكتبات مفتوحة المصدر في العالم.
  • سوف عقلك الحصول على الوقت مشوه في أرض الاستعادة المتداخلة ...
  • ... حتى تتعلم الحفاظ على Promises .
  • Sequelize و Passport هم أصدقاء API الجدد.
  • تصحيح رمز معظم المتزامن سوف تحصل على أم ... مثيرة للاهتمام .
  • الوقت لجميع Noders لإتقان Typescript .

من يستخدم ذلك؟


بلدي قطعة: nodejs عظيم لصنع أنظمة الوقت الحقيقي مثل تحليلات ، تطبيقات الدردشة ، apis ، خوادم الإعلانات ، الخ. الجحيم ، لقد قمت بعمل أول تطبيق دردشة باستخدام nodejs و socket.io أقل من ساعتين ، وكذلك خلال أسبوع الامتحان!

تصحيح

لقد مرت عدة سنوات منذ أن بدأت استخدام nodejs ولقد استخدمتها في صنع العديد من الأشياء المختلفة بما في ذلك خوادم الملفات الثابتة والتحليلات البسيطة وتطبيقات الدردشة وغير ذلك الكثير. هذا هو بلدي على اتخاذ عندما تستخدم nodejs

متى يجب استخدام

عند صنع النظام الذي يركز على التزامن والسرعة.

  • قم بتوصيل الخوادم فقط مثل تطبيقات الدردشة وتطبيقات irc وغير ذلك.
  • الشبكات الاجتماعية التي تركز على الموارد في الوقت الفعلي مثل تحديد الموقع الجغرافي ، وتسجيل الفيديو ، والتيار الصوتي ، وما إلى ذلك.
  • التعامل مع أجزاء صغيرة من البيانات بسرعة فائقة مثل webapp analytics.
  • كما تعريض REST فقط واجهة برمجة التطبيقات.

عندما لا تستخدم

في خادم الويب تنوعا للغاية بحيث يمكنك استخدامه حيثما تريد ولكن ربما لا هذه الأماكن.

  • بلوق بسيطة ومواقع ثابتة.
  • تماما كما خادم ملف ثابت.

ضع في اعتبارك أنني مجرد مزحة. بالنسبة لخوادم الملفات الثابتة ، يعد apache أفضل في الأساس لأنه متوفر على نطاق واسع. لقد أصبح مجتمع nodejs أكبر وأكثر نضجًا على مر السنين ، ومن الأسلم القول بأن nodejs يمكن استخدامه في كل مكان تقريبًا إذا كان لديك اختيارك الخاص للاستضافة.


عقدة واحدة أكثر شيء يوفر هو القدرة على إنشاء instanes v8 متعددة من عقدة باستخدام عملية الطفل العقدة ( childProcess.fork() كل تتطلب ذاكرة 10mb حسب المستندات ، على الطاير ، وبالتالي لا تؤثر على العملية الرئيسية التي تقوم بتشغيل الخادم. لذا ، فإن إلغاء مهمة خلفية تتطلب حملًا كبيرًا للخادم يصبح لعبة أطفال ويمكننا بسهولة أن نقتلهم عند الحاجة.

لقد كنت أستخدم العقدة كثيرًا وفي معظم التطبيقات التي ننتجها ، تتطلب اتصالات الخادم في نفس الوقت وبالتالي حركة مرور الشبكة الثقيلة. Koajs الأطر مثل Express.js و Koajs الجديدة (التي أزالت رد الاتصال الجحيم) العمل على عقدة أكثر سهولة.


لا يوجد شيء مثل Silver Bullet. كل شيء يأتي مع بعض التكاليف المرتبطة به. يبدو الأمر كما لو كنت تأكل غذاءً زيتياً ، فسوف تضر بصحتك ولا يأكل الطعام الصحي مع التوابل مثل الأطعمة الزيتية. هو الاختيار الفردي ما إذا كانوا يريدون الصحة أو التوابل كما هو الحال في طعامهم. بنفس الطريقة التي تعتبر Node.js استخدامها في سيناريو محدد. إذا كان تطبيقك لا يتناسب مع هذا السيناريو ، فلا يجب أن تفكر فيه لتطوير تطبيقك. أنا أضع تفكيري على نفسه:

متى يتم استخدام Node.JS

  1. إذا كان رمز جانب الخادم يتطلب عددًا قليلاً جدًا من دورات cpu. في العالم الآخر ، تقوم بعملية عدم الإغلاق وليس لديها خوارزمية / وظيفة مهمة تستهلك الكثير من دورات CPU.
  2. إذا كنت من جافاسكريبت مرة أخرى أرضيتها ومريحة في كتابة واحدة مترابطة الشفرة تماما مثل JS جانب العميل.

عندما لا تستخدم Node.JS

  1. يعتمد طلب الخادم الخاص بك على الخوارزمية / الوظيفة المهمة التي تستهلكها وحدة المعالجة المركزية.

اعتبارات التوسع مع Node.JS

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

بدائل Node.JS

هناك خيار آخر لاستخدام بدلاً من Node.JS ومع ذلك يبدو Vert.x أن يكون واعدًا جدًا ولديه الكثير من الميزات الإضافية مثل اعتبارات تعدد الثغرات وقابلية أفضل للتحجيم.


لدي مثال حقيقي في العالم حيث استخدمت Node.js. حصلت الشركة التي أعمل فيها على عميل واحد أراد أن يكون لديه موقع HTML ثابت بسيط. هذا الموقع هو لبيع عنصر واحد باستخدام PayPal ، ويريد العميل أيضا أن يكون لديه عداد يبين كمية العناصر المباعة. يتوقع العميل أن يكون لديه عدد هائل من الزوار لهذا الموقع. قررت جعل العداد باستخدام Node.js والإطار Express.js .

كان تطبيق Node.js بسيط. احصل على كمية البنود التي تم بيعها من قاعدة بيانات Redis ، وقم بزيادة العداد عند بيع السلعة وتقديم قيمة العداد للمستخدمين عبر API .

بعض الأسباب التي جعلتني اخترت استخدام Node.js في هذه الحالة

  1. انها خفيفة الوزن جدا وسريعة. كان هناك أكثر من 200000 زيارة على هذا الموقع في غضون ثلاثة أسابيع وتمكنت موارد الخادم الأدنى من التعامل مع كل ذلك.
  2. العداد من السهل حقا أن يكون في الوقت الحقيقي.
  3. كان Node.js سهل التكوين.
  4. هناك الكثير من الوحدات المتاحة مجانا. على سبيل المثال ، لقد وجدت وحدة Node.js لـ PayPal.

في هذه الحالة ، كان Node.js اختيار رائع.


لقد قمت بعمل رائع لتلخيص ما هو رائع حول Node.js. شعوري هو أن Node.js مناسب بشكل خاص للتطبيقات حيث ترغب في الحفاظ على اتصال مستمر من المستعرض إلى الخادم. باستخدام تقنية تعرف باسم "long-polling" ، يمكنك كتابة تطبيق يرسل تحديثات للمستخدم في الوقت الحقيقي. إن إجراء الاستطلاع الطويل على العديد من عمالقة الويب ، مثل Ruby on Rails أو Django ، من شأنه أن يخلق عبئًا هائلاً على الخادم ، لأن كل عميل نشط يكتسب عملية خادم واحدة. هذا الوضع يرقى إلى هجوم tarpit . عندما تستخدم شيئًا مثل Node.js ، لا يحتاج الخادم إلى صيانة سلاسل رسائل منفصلة لكل اتصال مفتوح.

هذا يعني أنه يمكنك إنشاء تطبيق دردشة مستندة إلى مستعرض في Node.js لا يأخذ أي موارد للنظام تقريبًا لخدمة العديد من العملاء. في أي وقت تريد فيه القيام بهذا النوع من الاقتراع الطويل ، يعد Node.js خيارًا رائعًا.

من الجدير بالذكر أن كلا من روبي وبيثون لديهما أدوات للقيام بهذا النوع من الأشياء ( eventmachine و twisted ، على التوالي) ، لكن Node.js يقوم بعمل جيد بشكل استثنائي ، ومن الألف إلى الياء. جافا سكريبت في وضع جيد بشكل استثنائي لنموذج التزامن القائم على معاودة الاتصال ، ويتفوق هنا. أيضا ، كونها قادرة على التسلسل والتجريد مع JSON الأصلي إلى كل من العميل والخادم هو أنيق جدا.

أتطلع لقراءة إجابات أخرى هنا ، وهذا سؤال رائع.

تجدر الإشارة إلى أن Node.js رائعة أيضًا للمواقف التي ستتم فيها إعادة استخدام الكثير من الشفرات عبر فجوة العميل / الخادم. يجعل إطار Meteor هذا أمرًا سهلاً حقًا ، ويشير الكثير من الأشخاص إلى أن هذا قد يكون مستقبل تطوير الويب. أستطيع أن أقول من التجربة أنه من الممتع جدًا كتابة التعليمات البرمجية في Meteor ، ويتمثل جزء كبير من هذا في قضاء وقت أقل في التفكير في كيفية إعادة هيكلة بياناتك ، بحيث يمكن للرمز الذي يعمل في المتصفح بسهولة التلاعب بها وتمريرها مرة أخرى.

إليك مقالة عن الهرم والاستطلاعات الطويلة ، والتي تبين أنها سهلة الإعداد بمساعدة من gevent: TicTacToe و Long Polling with Pyramid .


عقدة أفضل للتعامل مع الطلب المتزامن -

لذا ، دعونا نبدأ بقصة. من العامين الماضيين أعمل على جافا سكريبت وتطوير واجهة الويب وأنا أستمتع بها. عودة نهاية اللاعبين يوفر لنا بعض API مكتوبة في جاوة ، بيثون (نحن لا نهتم) ونكتب ببساطة دعوة AJAX ، والحصول على بياناتنا وتخمين ما! لقد إنتهينا. ولكن في الحقيقة ليس الأمر بهذه السهولة ، إذا كانت البيانات التي نتلقاها غير صحيحة أو أن هناك خطأ في الخادم ، فقمنا بالتوقف ، وعلينا الاتصال بشخصيتنا الخلفية عبر البريد أو الدردشة (أحيانًا على whatsApp أيضًا :)). ليس باردا. ماذا لو كتبنا API الخاص بنا في JavaScript واستدعاء تلك API من واجهة لدينا؟ نعم ، هذا رائع جدًا لأننا إذا واجهنا أي مشكلة في واجهة برمجة التطبيقات ، يمكننا النظر في الأمر. خمين ما ! يمكنك فعل هذا الآن ، كيف؟ - عقدة هناك بالنسبة لك.

موافق على أنه يمكنك كتابة API الخاص بك في JavaScript ولكن ماذا إذا كنت موافقًا على المشكلة أعلاه. هل لديك أي سبب آخر لاستخدام واجهة برمجة التطبيقات لراحة واجهة برمجة التطبيقات؟

لذلك هنا يبدأ السحر. نعم لدي أسباب أخرى لاستخدام عقدة API الخاصة بنا.

دعنا نرجع إلى نظام واجهة برمجة التطبيقات (API) التقليدي الباقي لدينا والذي يعتمد إما على عملية الحجب أو الربط. لنفرض طلبين متزامنين (r1 و r2) ، يتطلب كل منهما عملية تشغيل قاعدة بيانات. لذلك في النظام التقليدي ما سيحدث:

1. طريقة الانتظار: يبدأ الخادم الخاص بنا في تقديم طلب r1 وينتظر استجابة الاستعلام. بعد الانتهاء من r1 ، يبدأ الخادم بخدمة r2 بنفس الطريقة. لذا فإن الانتظار ليس فكرة جيدة لأننا لا نملك الكثير من الوقت.

2. طريقة التخييط: سيخلق الخادم لدينا اثنين من المواضيع لكل من الطلبات r1 و r2 ويخدم غرضهم بعد الاستعلام عن قاعدة البيانات حتى تبرد صومها. ولكن هذه الذاكرة تستهلك لأنك تستطيع أن ترى أننا بدأنا موضوعين ، كما أن المشكلة تزداد عند طلب كلا الطلبين نفس البيانات ثم لديك للتعامل مع نوع من الجمود. لذلك أفضل من طريقة الانتظار ولكن لا تزال هناك قضايا.

الآن هنا ، كيف ستفعل العقدة:

3. Nodeway: عندما يأتي الطلب المتزامن نفسه في العقدة ، فسوف يسجل حدثًا مع معاودة الاتصال به ويمضي قدمًا في انتظاره ، ولن ينتظر استجابة طلب البحث لطلب معين. عند طلب r1 تأتي حلقة الحدث في العقد (نعم هناك حدث حلقة في العقدة التي تخدم هذا الغرض.) تسجيل حدث مع وظيفة رد الاتصال والمضي قدما لخدمة طلب r2 وبالمثل تسجيل الحدث الخاص به مع ردها. عند انتهاء أي استعلام ، يتم تشغيل الحدث المطابق وتنفيذ استدعاءه لاستكماله دون مقاطعة.

لذلك لا تنتظر ، لا ترابط ، لا استهلاك الذاكرة - نعم هذا هو nodeway لخدمة واجهة برمجة التطبيقات بقية.


ارتداء الأسبستوس longjohns ...

أمس عنواني مع مطبوعات Packt ، برمجة تفاعلية مع JavaScript . ليس عنوان Node.js مركزيًا حقًا ؛ الغرض من الفصول المبكرة هو تغطية النظرية ، وفي وقت لاحق تغطي الفصول ذات التعليمات البرمجية الثقيلة الممارسة. ولأنني لم أكن أعتقد حقاً أنه سيكون من المناسب فشل إعطاء القراء خادم ويب ، بدا Node.js إلى حد بعيد الخيار الواضح. تم إغلاق القضية قبل فتحها.

كان بإمكاني إعطاء رؤية وردية جدا لتجربتي مع Node.js. بدلا من ذلك كنت صادقة حول النقاط الجيدة والنقاط السيئة التي واجهتها.

اسمح لي بتضمين بعض الاقتباسات ذات الصلة هنا:

تحذير: Node.js ونظامها الإيكولوجي ساخن - بما يكفي لحرقك بشدة!

عندما كنت مساعداً للمدرس في الرياضيات ، كان أحد الاقتراحات غير الواضحة التي قيلت لها هو عدم إخبار أحد الطلاب بأن شيئاً ما كان "سهلاً". كان السبب واضحاً إلى حد ما في الماضي: إذا أخبرت الناس أن شيئاً سهلاً ، لا يرى حلًا قد ينتهي به الأمر (أكثر) من الغباء ، لأنه ليس فقط أنهم لا يحصلون على كيفية حل المشكلة ، ولكن المشكلة أنهم أغبياء جدًا على الفهم أمرًا سهلاً!

هناك مسابقات لا تزعج فقط الأشخاص القادمين من بيثون / جانغو ، والتي تعيد تحميل المصدر فورًا إذا قمت بتغيير أي شيء. مع Node.js ، السلوك الافتراضي هو أنه إذا قمت بإجراء تغيير واحد ، يستمر الإصدار القديم نشطًا حتى نهاية الوقت أو حتى تقوم بإيقاف الملقم وإعادة تشغيله يدويًا. هذا السلوك غير الملائم لا يزعج فقط Pythonistas؛ كما أنه يزعج المستخدمين الأصليين Node.js الذين يقدمون الحلول المختلفة. The question “Auto-reload of files in Node.js” has have at this writing، 200 overvotes and 19 answers؛ تحرير يوجه المستخدم إلى نص مربية ، عقدة المشرف ، مع الصفحة الرئيسية في http://tinyurl.com/reactjs-node-supervisor . توفر هذه المشكلة للمستخدمين الجدد فرصة كبيرة للشعور بالغباء لأنهم اعتقدوا أنهم قد أصلحوا المشكلة ، ولكن السلوك القديم الذي لا يغيب عن الوجود ظل على حاله تمامًا. ومن السهل نسيان ترويض الخادم ؛ لقد فعلت ذلك عدة مرات. والرسالة التي أود أن أعطيها هي "لا ، أنت لست غبياً لأن هذا السلوك لـ Node.js يعوض ظهرك. إنه فقط أن مصممي Node.js لم يروا أي سبب لتقديم السلوك المناسب هنا. حاول أن تتعامل معها ، ربما تأخذ القليل من المساعدة من مشرف العقدة أو أي حل آخر ، ولكن من فضلك لا تمشي الشعور أنك غبي. أنت لست الشخص الذي يواجه المشكلة ؛ تكمن المشكلة في السلوك الافتراضي لـ Node.js. "

تم ترك هذا القسم ، بعد بعض النقاش ، لسبب محدد لأنني لا أريد أن أعطي انطباعًا عن "الأمر سهلاً". لقد قطعت يدي بشكل متكرر أثناء الحصول على أشياء للعمل ، ولا أريد أن أتجاوز الصعوبات جعلك تعتقد أن الحصول على Node.js ونظامه الإيكولوجي يعمل بشكل جيد هو أمر بسيط ، وإذا لم يكن الأمر صريحًا بالنسبة لك أيضًا ، فأنت لا تعرف ما تفعله. إذا كنت لا تواجه صعوبات البغيضة باستخدام Node.js ، هذا رائع. إذا قمت بذلك ، آمل أن لا تمشي الشعور ، "أنا غبي - يجب أن يكون هناك خطأ معي". أنت لست غبيا إذا كنت تواجه مفاجآت سيئة تتعامل مع Node.js. ليس انت! انها Node.js ونظامها الإيكولوجي!

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

قاعدة بيانات أخرى تبدو وكأنها مناسبة تمامًا ، وقد تكون قابلة للاسترداد حتى الآن ، هي تنفيذ من جانب الخادم لمخزن مفتاح القيمة HTML5. يتمتع هذا الأسلوب بالميزة الأساسية لواجهة برمجة التطبيقات التي يفهمها معظم مطوري الواجهة الأمامية جيدًا بما يكفي. لهذه المسألة ، إنها أيضًا واجهة برمجة تطبيقات يفهمها معظم مطوري البرامج الأمامية غير الجيدين جيدًا بما يكفي. ولكن مع حزمة localstorage عقدة ، في حين لا يتم توفير الوصول إلى بناء الجملة القاموس (تريد استخدام localStorage.setItem (مفتاح ، قيمة) أو localStorage.getItem (مفتاح) ، وليس localStorage [مفتاح]) ، يتم تنفيذ دلالات localStorage الكاملة ، بما في ذلك الحصة الافتراضية 5 ميغابايت - لماذا؟ هل يحتاج مطورو جافا سكريبت من جانب الخادم إلى الحماية من أنفسهم؟

بالنسبة إلى إمكانات قاعدة البيانات من جانب العميل ، فإن حصة 5 ميجا بايت لكل موقع هي في الحقيقة مقدار كبير ومفيد من غرفة التنفس للسماح لمطوري البرامج بالعمل معها. يمكنك تعيين حصة أقل بكثير ولا تزال تقدم للمطورين تحسينًا لا يقاس على العرج مع إدارة ملفات تعريف الارتباط. لا يصل حد 5 ميغابايت إلى سرعة كبيرة في معالجة البيانات من جانب عميل البيانات الكبيرة ، ولكن هناك بدل سخي حقاً يمكن للمطورين الحيويين استخدامه للقيام بالكثير. ولكن من ناحية أخرى ، لا يمثل حجم 5 ميغابايت جزءًا كبيرًا من معظم الأقراص التي تم شراؤها في أي وقت مؤخرًا ، وهذا يعني أنه في حالة عدم موافقتك وموقع الويب على الاستخدام المعقول لمساحة القرص ، أو أن بعض المواقع لا يتطلب الأمر مطلقًا ، أنت لا تتحمل أي خطر على محرك الأقراص الصلبة الذي لا يزال مستمراً إلا إذا كان محرك الأقراص الثابت ممتلئًا بالفعل. ربما سنكون أفضل حالاً إذا كان الميزان أقل قليلاً أو أكثر بقليل ، ولكنه بشكل عام حل لائق لمعالجة التوتر الداخلي لسياق العميل.

ومع ذلك ، قد يتم الإشارة برفق إلى أنه عندما تكون أحد رموز الكتابة الخاصة بخادمك ، فإنك لا تحتاج إلى أي حماية إضافية من جعل قاعدة البيانات لديك أكثر من حجم 5 ميغابايت يمكن تحمله. لن يحتاج معظم المطورين أو لا يريدون أدوات تعمل كمربية وتحميهم من تخزين أكثر من 5 ميغابايت من البيانات من جانب الخادم. والحصص 5MB التي هي عمل التوازن الذهبي على جانب العميل هو سخيفة بعض الشيء على خادم Node.js. (وبالنسبة لقاعدة بيانات لمستخدمين متعددين مثل ما تم تغطيته في هذا الملحق ، قد يكون من المدهش قليلاً أن هذا ليس 5 ميغابايت لكل حساب مستخدم ما لم تقم بإنشاء قاعدة بيانات منفصلة على القرص لكل حساب مستخدم ؛ وهذا هو 5 ميغابايت المشتركة بين يمكن أن يكون ذلك مؤلمًا إذا كنت تتحول إلى فيروسات!) تشير الوثائق إلى أن الحصة قابلة للتخصيص ، ولكن بريدًا إلكترونيًا قبل أسبوع لمطوّر يتساءل عن كيفية تغيير الحصة لم تتم الإجابة عليه ، كما كان سؤال يسأل نفسه .الإجابة الوحيدة التي تمكنت من العثور عليها موجودة في مصدر Github CoffeeScript ، حيث يتم سردها كوسيطة صحيحة ثانية اختيارية إلى مُنشئ. هذا سهل بما فيه الكفاية ، ويمكنك تحديد حصة تساوي حجم القرص أو القسم. ولكن إلى جانب نقل ميزة لا معنى لها ، فقد فشل مؤلف الأداة تمامًا في اتباع معيار معياري جدًا لتفسير 0 على أنه يعني "غير محدود" لمتغير أو دالة حيث يحدد العدد الصحيح حدًا أقصى لاستخدام بعض الموارد. أفضل شيء يمكن القيام به مع هذا الخطأ هو تحديد أن الحصة هي إنفينيتي:

if (typeof localStorage === 'undefined' || localStorage === null)
  {      
  var LocalStorage = require('node-localstorage').LocalStorage;
  localStorage = new LocalStorage(__dirname + '/localStorage',
    Infinity);
  }

مبادلة تعليقين بالترتيب:

أطلق الناس بلا داع النار على أنفسهم باستمرار باستخدام جافا سكريبت ككل ، وجزءًا من جافا سكريبت يتم إجراؤه بلغة محترمة كان يقول دوجلاس كروكفورد في جوهره ، "إن JavaScript كلغة تحتوي على أجزاء جيدة بالفعل وبعض الأجزاء السيئة حقًا. وهنا الأجزاء الجيدة. فقط ننسى أن أي شيء آخر موجود ". ولعل النظام الإيكولوجي الساخن Node.js سينمو " دوغلاس كروكفورد " الخاص به ، الذي سيقول ،" إن النظام الإيكولوجي Node.js هو رمز الغرب المتوحش ، ولكن هناك بعض الأحجار الكريمة الحقيقية التي يمكن العثور عليها . وهنا خارطة طريق. فيما يلي المجالات التي يجب تجنبها بأي ثمن تقريبًا. في ما يلي المناطق التي توجد بها أغنى أغنياء يمكن العثور عليها في أي لغة أو بيئة ".

ربما يمكن لشخص آخر أن يأخذ هذه الكلمات كتحدي ، ويتبع قيادة كروكفورد ويكتب "الأجزاء الجيدة" و / أو "الأجزاء الأفضل" لـ Node.js ونظامه البيئي. سأشتري نسخة!

وبالنظر إلى درجة الحماس وساعات العمل الشاقّة في جميع المشاريع ، قد يكون هناك ما يبرر ذلك في سنة أو اثنتين أو ثلاث ، لتخفيف حدة أي ملاحظات حول نظام إيكولوجي غير ناضج تم إعداده في وقت كتابة هذه السطور. قد يكون من المعقول حقا في غضون خمس سنوات أن نقول ، "إن النظام البيئي 2015 Node.js كان العديد من حقول الألغام. يحتوي النظام البيئي 2020 Node.js على العديد من الجنة ".


يمكنني مشاركة بعض النقاط حيث ولماذا تستخدم العقدة js.

  1. بالنسبة إلى تطبيقات الوقت الفعلي مثل الدردشة والتحرير التعاوني بشكل أفضل ، نذهب مع nodejs نظرًا لأنه قاعدة الحدث حيث يتم إطلاق حدث وبيانات إلى العملاء من الخادم.
  2. بسيطة وسهلة الفهم كما هو قاعدة جافا سكريبت حيث معظم الناس لديهم فكرة.
  3. معظم تطبيقات الويب الحالية التي تتجه إلى js و العمود الفقري الزاوي ، مع عقدة من السهل أن تتفاعل مع رمز جانب العميل حيث يستخدم كلاهما بيانات json.
  4. الكثير من الإضافات المتاحة.

السلبيات: -

  1. ستدعم العقدة معظم قواعد البيانات ، لكن أفضلها هو mongodb الذي لن يدعم الصلات المعقدة وغيرها.
  2. أخطاء التجميع ... يجب على المطور أن يتعامل مع كل استثناءات أخرى من الحكمة إذا توقف أي تطبيق من شروط الخطأ عن العمل حيث نحتاج مرة أخرى إلى البدء والبدء يدويًا أو باستخدام أي أداة أتمتة.

الخلاصة: - أفضل استخدام Nodejs لتطبيقات بسيطة وفي الوقت الحقيقي .. إذا كان لديك منطق الأعمال الكبيرة جدا والوظائف المعقدة بشكل أفضل يجب أن لا تستخدم nodejs. إذا كنت ترغب في إنشاء تطبيق إلى جانب الدردشة وأي وظيفة تعاونية ، فيمكن استخدام العقدة في أجزاء محددة ، ويجب أن تظل العقدة مع تكنولوجيا الراحة الخاصة بك.


إذا كان تطبيقك يعتمد بشكل أساسي على واجهة ويب apis أو على قنوات اتصال إنترنت أخرى أو اعطِ واجهة مستخدم أو خذها ، فقد يكون node.js اختيارًا مناسبًا لك ، خصوصًا إذا كنت ترغب في زيادة قابلية التوسع ، أو إذا كانت لغتك الرئيسية في الحياة هو javascript (أو javascript transpilers من الأنواع). إذا كنت تقوم ببناء خدمات microservices ، فإن node.js على ما يرام أيضًا. Node.js مناسب أيضًا لأي مشروع صغير أو بسيط.

نقطة بيعه الرئيسية هي أنه يسمح للجهة الأمامية تحمل المسؤولية عن الأشياء الخلفية بدلاً من الانقسام المعتاد. نقطة بيع أخرى يمكن تبريرها إذا كانت قوتك العاملة موجهة لجافا سكريبت لتبدأ بها.

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

على وجه الخصوص ، عندما يحتاج التطبيق الخاص بك إلى تنفيذ التدفقات المتزامنة ، تبدأ في النزيف على حلول نصف مخبوز والتي تبطئك بشكل كبير من حيث عملية التطوير الخاصة بك. إذا كان لديك أجزاء حساب مكثفة في التطبيق الخاص بك ، فقم بحذر مع اختيار (فقط) node.js. ربما Koajs أو غيرها من المستجدات الأخرى تخفف تلك الجوانب الشائكة في الأصل ، بالمقارنة مع عندما استخدمت في الأصل node.js أو كتبت هذا.





web-applications