جاري التحميل...
جاري التحميل...
إضافة Clerk وتصميم الصفحة العامة
بعد بناء قاعدة البيانات، نحتاج إلى إعداد مصادقة المستخدمين والتخطيط الرئيسي. Clerk يتعامل مع المصادقة بينما ننشئ الهيكل البصري.
💡 ما سنتعلمه:
إعداد مصادقة Clerk، إنشاء صفحات تسجيل الدخول/التسجيل، حماية المسارات باستخدام middleware، بناء التخطيط الرئيسي مع الرأس والشريط الجانبي والتذييل.
يوفر Clerk حل مصادقة كامل. أولاً ثبّت الحزمة، ثم اضبط متغيرات البيئة، ولُف التطبيق باستخدام ClerkProvider.
💡 مكونات Clerk الرئيسية:
ClerkProvider يلف التطبيق، SignIn/SignUp يتعاملان مع تسجيل الدخول/التسجيل، UserButton يعرض صورة المستخدم مع القائمة المنسدلة، SignedIn/SignedOut يتحكمان في العرض الشرطي.
تحمي الوسيطات المسارات عن طريق التحقق مما إذا كان المستخدمون مصادق عليهم قبل الوصول إلى الصفحات المحمية مثل لوحة التحكم.
💡 كيف تعمل الوسيطات:
أنشئ مقارنات المسارات للمسارات المحمية، استدعِ auth.protect() لطلب المصادقة، تعمل الوسيطات قبل عرض الصفحة.
يوفر Clerk مكونات جاهزة لصفحات تسجيل الدخول والتسجيل باستخدام المسارات الشاملة.
💡 هيكل المسارات:
استخدم المسارات الشاملة [[...sign-in]] و [[...sign-up]] لصفحات مصادقة Clerk.
مكون UserButton من Clerk يعرض صورة المستخدم ويوفر خيارات إدارة الحساب.
💡 العرض الشرطي:
استخدم SignedIn لعرض رابط لوحة التحكم وUserButton عند تسجيل الدخول، وSignedOut لعرض زر تسجيل الدخول عند تسجيل الخروج.
أنشئ تخطيطًا مع الرأس والشريط الجانبي والتذييل باستخدام CSS Grid أو Flexbox للتصميم المتجاوب.
💡 نمط التخطيط:
استخدم المجموعات المRoute لتنظيم المسارات، أنشئ مكونات تخطيط مشتركة، تأكد من التنقل المتسق عبر الصفحات.
أي وظيفة Clerk تحمي المسارات في الوسيطات؟
أين يجب وضع ClerkProvider لحماية جميع المسارات؟
أنشئ صفحة /profile تعرض معلومات المستخدم باستخدام مكون UserProfile من Clerk. أنشئ المسار، أضف الصفحة مع UserProfile، وحمِّ المسار باستخدام الوسيطات.
مكونات Clerk:
ClerkProvider - يلف التطبيق لسياق المصادقةSignIn / SignUp - صفحات تسجيل الدخول والتسجيلUserButton - زر حساب المستخدم في الرأسSignedIn / SignedOut - العرض الشرطيمفاهيم التخطيط:
كيف تدير أخطاء المشروع؟
الإجابة:
اكتب اختبارات، استخدم linting، و راجع الكود باستمرار.
كيف تُحسّن أداء المشروع؟
الإجابة:
قلل الـ bundle size، استخدم lazy loading، وحسّن الصور.
استخدم Git branches
افصل كل ميزة في branch منفصل
اكتب tests
لا تنشر ميزة بدون اختبارات