# بناء تطبيق مصرفي الجزء الأول: قوالب HTML والمسارات في تطبيق ويب عندما قامت حاسوب التوجيه الخاص بـ Apollo 11 بالتنقل إلى القمر في عام 1969، كان عليه التبديل بين برامج مختلفة دون إعادة تشغيل النظام بالكامل. تعمل تطبيقات الويب الحديثة بطريقة مشابهة – فهي تغير ما تراه دون إعادة تحميل كل شيء من البداية. هذا يخلق تجربة سلسة وسريعة يتوقعها المستخدمون اليوم. على عكس المواقع التقليدية التي تعيد تحميل الصفحات بالكامل لكل تفاعل، تقوم تطبيقات الويب الحديثة بتحديث الأجزاء التي تحتاج إلى تغيير فقط. هذا النهج، مثلما يقوم مركز التحكم بالتبديل بين شاشات مختلفة مع الحفاظ على الاتصال المستمر، يخلق تلك التجربة السلسة التي اعتدنا عليها. إليك ما يجعل الفرق كبيرًا جدًا: | التطبيقات التقليدية متعددة الصفحات | التطبيقات الحديثة ذات الصفحة الواحدة | |------------------------------------|------------------------------------| | **التنقل** | إعادة تحميل الصفحة بالكامل لكل شاشة | تبديل المحتوى بشكل فوري | | **الأداء** | أبطأ بسبب تنزيل HTML بالكامل | أسرع مع تحديثات جزئية | | **تجربة المستخدم** | وميض الصفحات المزعج | انتقالات سلسة تشبه التطبيقات | | **مشاركة البيانات** | صعوبة بين الصفحات | إدارة الحالة بسهولة | | **التطوير** | ملفات HTML متعددة تحتاج إلى صيانة | ملف HTML واحد مع قوالب ديناميكية | **فهم التطور:** - **التطبيقات التقليدية** تتطلب طلبات من الخادم لكل عملية تنقل - **التطبيقات الحديثة ذات الصفحة الواحدة (SPAs)** يتم تحميلها مرة واحدة وتحديث المحتوى ديناميكيًا باستخدام JavaScript - **توقعات المستخدمين** الآن تفضل التفاعلات الفورية والسلسة - **فوائد الأداء** تشمل تقليل استهلاك النطاق الترددي واستجابات أسرع في هذا الدرس، سنقوم ببناء تطبيق مصرفي يحتوي على شاشات متعددة تتدفق معًا بسلاسة. مثلما يستخدم العلماء أدوات معيارية يمكن إعادة تكوينها لتجارب مختلفة، سنستخدم قوالب HTML كعناصر قابلة لإعادة الاستخدام يمكن عرضها حسب الحاجة. ستعمل مع قوالب HTML (مخططات قابلة لإعادة الاستخدام لشاشات مختلفة)، توجيه JavaScript (النظام الذي يبدل بين الشاشات)، وواجهة برمجة التطبيقات الخاصة بتاريخ المتصفح (التي تحافظ على عمل زر الرجوع كما هو متوقع). هذه هي نفس التقنيات الأساسية التي تستخدمها أطر العمل مثل React، Vue، وAngular. بحلول النهاية، سيكون لديك تطبيق مصرفي يعمل يوضح مبادئ التطبيقات ذات الصفحة الواحدة بشكل احترافي. ## اختبار ما قبل المحاضرة [اختبار ما قبل المحاضرة](https://ff-quizzes.netlify.app/web/quiz/41) ### ما ستحتاجه سنحتاج إلى خادم ويب محلي لاختبار تطبيقنا المصرفي – لا تقلق، الأمر أسهل مما يبدو! إذا لم يكن لديك واحد مثبت بالفعل، فقط قم بتثبيت [Node.js](https://nodejs.org) وقم بتشغيل `npx lite-server` من مجلد المشروع الخاص بك. هذا الأمر المفيد يقوم بتشغيل خادم محلي ويفتح تطبيقك تلقائيًا في المتصفح. ### التحضير على جهاز الكمبيوتر الخاص بك، قم بإنشاء مجلد باسم `bank` مع ملف باسم `index.html` بداخله. سنبدأ من هذا [القالب الأساسي](https://en.wikipedia.org/wiki/Boilerplate_code): ```html Bank App ``` **إليك ما يوفره هذا القالب الأساسي:** - **يحدد** هيكل مستند HTML5 مع إعلان DOCTYPE الصحيح - **يهيئ** ترميز الأحرف كـ UTF-8 لدعم النصوص الدولية - **يمكن** التصميم المتجاوب باستخدام علامة meta الخاصة بالعرض لتوافق الأجهزة المحمولة - **يضع** عنوانًا وصفيًا يظهر في علامة تبويب المتصفح - **ينشئ** قسمًا نظيفًا للجسم حيث سنبني تطبيقنا > 📁 **معاينة هيكل المشروع** > > **بحلول نهاية هذا الدرس، سيحتوي مشروعك على:** > ``` > bank/ > ├── index.html > ├── app.js > └── style.css > ``` > > **مسؤوليات الملفات:** > - **index.html**: يحتوي على جميع القوالب ويوفر هيكل التطبيق > - **app.js**: يتعامل مع التوجيه، التنقل، وإدارة القوالب > - **القوالب**: تحدد واجهة المستخدم لتسجيل الدخول، لوحة التحكم، والشاشات الأخرى --- ## قوالب HTML تحل القوالب مشكلة أساسية في تطوير الويب. عندما اخترع غوتنبرغ الطباعة بالحروف المتحركة في الأربعينيات من القرن الخامس عشر، أدرك أنه بدلاً من نحت صفحات كاملة، يمكنه إنشاء كتل حروف قابلة لإعادة الاستخدام وترتيبها حسب الحاجة. تعمل قوالب HTML على نفس المبدأ – بدلاً من إنشاء ملفات HTML منفصلة لكل شاشة، تقوم بتحديد هياكل قابلة لإعادة الاستخدام يمكن عرضها عند الحاجة. فكر في القوالب كمخططات لأجزاء مختلفة من تطبيقك. تمامًا كما يقوم المهندس المعماري بإنشاء مخطط واحد ويستخدمه عدة مرات بدلاً من إعادة رسم غرف متطابقة، نقوم بإنشاء القوالب مرة واحدة ونستخدمها حسب الحاجة. يحتفظ المتصفح بهذه القوالب مخفية حتى يقوم JavaScript بتنشيطها. إذا كنت تريد إنشاء شاشات متعددة لصفحة ويب، فإن أحد الحلول هو إنشاء ملف HTML لكل شاشة تريد عرضها. ومع ذلك، يأتي هذا الحل مع بعض الإزعاج: - يجب عليك إعادة تحميل HTML بالكامل عند تبديل الشاشة، مما قد يكون بطيئًا. - من الصعب مشاركة البيانات بين الشاشات المختلفة. نهج آخر هو أن يكون لديك ملف HTML واحد فقط، وتحديد قوالب [HTML](https://developer.mozilla.org/docs/Web/HTML/Element/template) متعددة باستخدام عنصر `