أدت التغييرات البيئية إلى قفزة تكنولوجية رائعة إلى الأمام ، مع الفرص والتحديات في نفس الوقت. لأنني لم أتعلم JS ، اضطررت إلى قيادة البطة لوضعها على الرفوف وتعلمها معًا. (><)
1. اقرأ الكتاب أولاً
قرأت "العدوى المتعمقة وسهلة الفهم" في البداية ، وأدركت أن هذا الكتاب يتطلب أساسًا معينًا بعد قراءته. لقد بحثت في "مقدمة إلى العقدة" المكونة من 41 صفحة عبر الإنترنت وتعلمت بناء تطبيق ويب بنفسي. وبعد تحديث الشعور بالإنجاز ، قرأت "The Great Node.js". الآن سأقرأ الكتاب مرة أخرى بعد القراءة "العدوى المتعمقة وسهلة الفهم".
2. قم ببناء بيئة لتشغيل الروتين على GIT (تم الإبلاغ عن 3 أخطاء)
بعد تنزيل MSI على الموقع الرسمي ، انتقل إلى جميع الطريق. عند إدخال أمر NPM ، تم الإبلاغ عن خطأ "NPM ERR! غير موجود: GIT". والسبب هو أن الكمبيوتر الجديد لا يتبع git.
عند تثبيت حزمة التبعية الخارجية ، تم الإبلاغ عن خطأ "GYP ERR! تكوين خطأ" ، والسبب هو أن بيئة Python لم تفعل ذلك. علاوة على ذلك ، لا يمكن تثبيت حزمة التبعية هذه إلا في الإصدار السفلي. كان الخطأ الأخير هو "MSBuild: Error MSB3428: Visual C ++ Component" VCBuild.exe "فشل في التحميل. لا يزال هناك خطأ بعد تثبيت .NET Framework 2.0 SDK و MVS2005.
3. تطبيق الويب الأول
بعد تشغيل "Hello World" ، ابدأ في كتابة تطبيق ويب يعتمد تمامًا على العقدة. أولاً ، تحتاج إلى بدء وحدة الخادم. الكائن الذي يتم إرجاعه بواسطة وظيفة Correeserver في وحدة HTTP لديه منفذ الاستماع للاستماع ([PORT]). معلمات هذه الوظيفة غريبة وهي تعريف دالة. في JavaScript ، يمكن أن تتلقى الدالة معلمة كدالة أخرى ، وتسمى وظيفة المعلمة وظيفة مجهولة. سبب استخدام هذه الطريقة هو أن العقدة تستخدم عمليات الاسترجاعات التي تعتمد على الحدث. عندما يتلقى الخادم طلبًا في عملية واحدة ، فإنه سيتصل بهذه الوظيفة لمعالجة الطلب. عند حدوث حدث مقابل ، تستدعي وظيفة Correeserver هذه الوظيفة ذهابًا وإيابًا.
بعد تلقي طلب HTTP ، يتعين علينا معالجة الطلب. أولاً ، نقترح عناوين URL مختلفة وينشر المعلمات ونشرها للطلب. هنا نستخدم اثنين عناوين URL للوحدة الداخلية (تحليل عناوين URL) وسلسلة الاستعلام (معالجة سلاسل الاستعلام). وأضف وحدة التوجيه من خلال حقن التبعية. بعد ذلك ، يجب إكمال الوحدة النمطية التي تتعامل مع الطلب قبل تحسين التوجيه. يتم تمرير جميع الطلبات لأول مرة بين الوحدات من خلال المقبض ، ويمكن للمعالج الاستجابة. بشكل عام ، دع معالج الطلب يعيد مباشرة (Return ()) المعلومات التي يرغبون في عرضها للمستخدم من خلال وظيفة OnRequest. ومع ذلك ، يمكن أن يستغرق الأمر وقتًا طويلاً عند إجراء عمليات الحظر ، لذلك نحتاج إلى استخدام عمليات عدم الحظر. استخدم عمليات الاسترجاعات عن طريق تمرير الوظيفة كوسيطة إلى وظائف أخرى تستغرق وقتًا للمعالجة. مقارنة بتمرير المحتوى إلى الخادم ، نستخدم طريقة "تمرير" الخادم إلى المحتوى هذه المرة. هو تمرير كائن الاستجابة (الحصول على وظيفة رد الاتصال الخاصة بالخادم onRequest ()) كمعلمة دالة للمعالج من خلال التوجيه. بهذه الطريقة ، يمكن للمعالج استدعاء الوظائف على الكائن.
بعد ذلك ، سنقوم بتنفيذ خطوة المعالجة ، وتحميل الصور من خلال النموذج ، وهنا نستخدم حزمة التبعية الخارجية الهائلة لتلقي الصور. يتم استخدام هذه الوحدة لمعالجة النماذج وتحميل الملفات. أول استخدام var form = new Termatable.incomingform () ؛ للحصول على كائن النموذج. يمكن لطريقة تحليل هذا الكائن تحليل بيانات النموذج ومعالجة. نحن ببساطة حفظ الملف. يتم استخدام وحدة FS لحفظ الملف. من خلال إعادة تسمية الطريقة ، وتحديد الموقع المحفوظ ، باستخدام الطريقة المتزامنة Renamesync () ، يمكن أن يسبق سلوك حفظ الملف عن طريق عرض سلوك الصورة.
من السهل جدًا عرض الصور. يمكنك قراءة الملف من خلال طريقة ReadFile لـ FS. يمكنك استخدام Response.write (ملف ، "ثنائي") في وظيفة رد الاتصال لعرض الصور في المتصفح.
لتلخيص: من خلال هذا الروتين ، تعلمنا عن الميزات الموجودة في Node.js ، مثل الخيوط الواحدة ، غير المتزامنة ، التي تعتمد على الأحداث ، وما إلى ذلك. يتم أيضًا عرض بعض هذه المفاهيم المجردة من خلال إجراءات ، لكن لا يزال يتعين فهمها بعمق. يعني التعلم من خلال الإجراءات الروتينية أنك بحاجة إلى التحقق من المعلومات عندما لا تفهمها. طريقة التعلم هذه هي أيضًا طريقة جيدة من نوع الإدخال والمخرج.