# بناء تطبيق مصرفي الجزء الثاني: إنشاء نموذج تسجيل الدخول والتسجيل ```mermaid journey title Your Form Development Journey section HTML Foundation Understand form elements: 3: Student Learn input types: 4: Student Master accessibility: 4: Student section JavaScript Integration Handle form submission: 4: Student Implement AJAX communication: 5: Student Process server responses: 5: Student section Validation Systems Create multi-layer validation: 5: Student Enhance user experience: 5: Student Ensure data integrity: 5: Student ``` ## اختبار ما قبل المحاضرة [اختبار ما قبل المحاضرة](https://ff-quizzes.netlify.app/web/quiz/43) هل سبق لك أن ملأت نموذجًا عبر الإنترنت وتم رفض تنسيق بريدك الإلكتروني؟ أو فقدت كل معلوماتك عند النقر على زر الإرسال؟ لقد واجهنا جميعًا هذه التجارب المحبطة. النماذج هي الجسر بين المستخدمين ووظائف تطبيقك. مثل البروتوكولات الدقيقة التي يستخدمها مراقبو الحركة الجوية لتوجيه الطائرات بأمان إلى وجهاتها، توفر النماذج المصممة جيدًا ردود فعل واضحة وتمنع الأخطاء المكلفة. أما النماذج السيئة، من ناحية أخرى، يمكن أن تبعد المستخدمين بسرعة أكبر من سوء التواصل في مطار مزدحم. في هذه الدرس، سنحول تطبيقك المصرفي الثابت إلى تطبيق تفاعلي. ستتعلم كيفية إنشاء نماذج تتحقق من صحة إدخال المستخدم، تتواصل مع الخوادم، وتوفر ردود فعل مفيدة. فكر في الأمر كإنشاء واجهة التحكم التي تتيح للمستخدمين التنقل في ميزات تطبيقك. بحلول النهاية، سيكون لديك نظام تسجيل دخول وتسجيل كامل مع التحقق الذي يوجه المستخدمين نحو النجاح بدلاً من الإحباط. ```mermaid mindmap root((Form Development)) HTML Foundation Semantic Elements Input Types Accessibility Label Association User Experience Validation Feedback Error Prevention Loading States Success Messaging JavaScript Integration Event Handling AJAX Communication Data Processing Error Management Validation Layers HTML5 Validation Client-side Logic Server-side Security Progressive Enhancement Modern Patterns Fetch API Async/Await Form Data API Promise Handling ``` ## المتطلبات الأساسية قبل أن نبدأ في إنشاء النماذج، دعنا نتأكد من أن كل شيء معد بشكل صحيح. هذا الدرس يستكمل ما بدأناه في الدرس السابق، لذا إذا قفزت إلى الأمام، قد ترغب في العودة والتأكد من أن الأساسيات تعمل أولاً. ### الإعداد المطلوب | المكون | الحالة | الوصف | |--------|--------|-------| | [قوالب HTML](../1-template-route/README.md) | ✅ مطلوب | هيكل تطبيقك المصرفي الأساسي | | [Node.js](https://nodejs.org) | ✅ مطلوب | بيئة تشغيل JavaScript للخادم | | [خادم API المصرفي](../api/README.md) | ✅ مطلوب | خدمة خلفية لتخزين البيانات | > 💡 **نصيحة تطوير**: ستقوم بتشغيل خادمين منفصلين في نفس الوقت – واحد لتطبيقك المصرفي الأمامي وآخر لخادم API الخلفي. هذا الإعداد يعكس تطوير العالم الحقيقي حيث تعمل خدمات الواجهة الأمامية والخلفية بشكل مستقل. ### إعداد الخادم **بيئة التطوير الخاصة بك ستشمل:** - **خادم الواجهة الأمامية**: يقدم تطبيقك المصرفي (عادةً على المنفذ `3000`) - **خادم API الخلفي**: يتعامل مع تخزين البيانات واسترجاعها (المنفذ `5000`) - **كلا الخادمين** يمكن تشغيلهما في نفس الوقت دون تعارض **اختبار اتصال API الخاص بك:** ```bash curl http://localhost:5000/api # Expected response: "Bank API v1.0.0" ``` **إذا رأيت استجابة إصدار API، فأنت جاهز للمتابعة!** --- ## فهم نماذج HTML وعناصر التحكم نماذج HTML هي الطريقة التي يتواصل بها المستخدمون مع تطبيق الويب الخاص بك. فكر فيها كنظام التلغراف الذي ربط الأماكن البعيدة في القرن التاسع عشر – إنها بروتوكول الاتصال بين نية المستخدم واستجابة التطبيق. عندما يتم تصميمها بعناية، فإنها تلتقط الأخطاء، توجه تنسيق الإدخال، وتوفر اقتراحات مفيدة. النماذج الحديثة أكثر تطورًا بكثير من إدخالات النص الأساسية. قدم HTML5 أنواع إدخال متخصصة تتعامل مع التحقق من البريد الإلكتروني، تنسيق الأرقام، واختيار التواريخ تلقائيًا. هذه التحسينات تفيد كل من إمكانية الوصول وتجارب المستخدمين على الأجهزة المحمولة. ### عناصر النموذج الأساسية **اللبنات الأساسية التي يحتاجها كل نموذج:** ```html
``` **ما يفعله هذا الكود:** - **ينشئ** حاوية نموذج بمعرف فريد - **يحدد** طريقة HTTP لإرسال البيانات - **يربط** التسميات بالإدخالات لتحسين إمكانية الوصول - **يحدد** زر إرسال لمعالجة النموذج ### أنواع الإدخال الحديثة والسمات | نوع الإدخال | الغرض | مثال الاستخدام | |-------------|-------|----------------| | `text` | إدخال نص عام | `` | | `email` | التحقق من البريد الإلكتروني | `` | | `password` | إدخال نص مخفي | `` | | `number` | إدخال رقمي | `` | | `tel` | أرقام الهاتف | `` | > 💡 **ميزة HTML5 الحديثة**: استخدام أنواع الإدخال المحددة يوفر التحقق التلقائي، لوحات مفاتيح مناسبة للأجهزة المحمولة، ودعم أفضل لإمكانية الوصول دون الحاجة إلى JavaScript إضافي! ### أنواع الأزرار وسلوكها ```html ``` **ما يفعله كل نوع من الأزرار:** - **أزرار الإرسال**: تُشغل إرسال النموذج وترسل البيانات إلى نقطة النهاية المحددة - **أزرار إعادة التعيين**: تعيد جميع حقول النموذج إلى حالتها الأولية - **الأزرار العادية**: لا توفر سلوكًا افتراضيًا، وتتطلب JavaScript مخصصًا للوظائف > ⚠️ **ملاحظة مهمة**: عنصر `` يغلق نفسه ولا يتطلب علامة إغلاق. الممارسة الحديثة الأفضل هي كتابة `` بدون الشريط. ### إنشاء نموذج تسجيل الدخول الخاص بك الآن دعونا ننشئ نموذج تسجيل دخول عملي يوضح ممارسات نماذج HTML الحديثة. سنبدأ بهيكل أساسي ونقوم بتحسينه تدريجيًا بميزات إمكانية الوصول والتحقق. ```html