الأفضل إجبار الطلبات على أن تكون من نوع JSON، لأنّ المتصفحات بشكل افتراضي تطلب محتوى HTML عند الدخول إلى رابط، بينما تطبيقات الموبايل أو المواقع الأخرى التي تتصل بالـ API ترسل ترويسة Header تسمى Accept: application/json لذا تستطيع منع الدخول المباشر عبر المتصفح من خلال إنشاء Middleware يتحقق من وجود تلك الترويسة. php artisan make:middleware ForceJsonResponse ثم اذهب إلى الملف الذي تم إنشاؤه في app/Http/Middleware/ForceJsonResponse.php وقم بتعديل دالة handle لتصبح كالتالي: <?php namespace App\Http\Middleware; use Closure; use Illuminate\Http\Request; use Symfony\Component\HttpFoundation\Response; class ForceJsonResponse { public function handle(Request $request, Closure
تطوير الويب
96.3 ألف متابع
مجتمع لمناقشة وتبادل الخبرات حول تطوير الويب. ناقش أحدث التقنيات، اللغات، والأدوات في عالم تطوير المواقع والتطبيقات. شارك مشاريعك، اسأل عن نصائح، وتعاون مع مطورين محترفين وهواة.
عن المجتمع
صحيح أنه في مشاريع لارافيل لا يتم رفع ملفات المشروع ضمن مجلد public_html ومن بينها ملف متغيرات البيئة env. لأن هذا الأخير في هاته الحالة يكون قابلا للوصول وبالتالي سيعرض موقعك للخطر. الطريقة المعتادة هي رفع كامل الملفات في مجلد على مستوى مجلد public_html أي في نفس مجلده الحاوي. ويبقى مجلد public_html ليحتوي فقط على محتويات مجلد public في لارافيل. أيضا يستوجب تعديل index.php بما يستوفي هذا التعديل.
بالنسبة لي أول ما يلفت انتباهي عند دخول أي موقع هو السرعة وسلاسة التصفح اعتقد أن ذلك عائد لخلفيتي البرمجية 😅. حتى لو كانت الصور والفيديوهات رائعة، موقع بطيء أو صعب التصفح يشعرني بالإحباط ويجعلني أغادر بسرعة. أحيانًا تصميم بسيط ونظيف مع ألوان متناسقة وخطوط مريحة للعين يكون أكثر جذبًا من أي محتوى بصري متقن، لأنه يعطي شعورًا بالاحترافية ويشجع على الاستكشاف بدون ضغط أو تشويش.
الطريقة الأسرع هي الجمع بين ملف شخصي قوي وأسلوب ذكي في التقديم على المشاريع. لا تقدم نفسك كـ “مبرمج عام”. قدم نفسك مثلا كـ: مطوّر مواقع باستخدام Laravel أو مطوّر واجهات Frontend (React / Vue) أو مصمّم واجهات UI/UX فالتخصص يعطيك قوة، ويعطي انطباعا أنك متخصص في جزئية معينة. اعمل 3–5 نماذج (Portfolio) وليس شرطًا أن تكون لعملاء او مشاريع حقيقية قمت بها لعملاء. اصنع مشاريع بسيطة، مثل: صفحة هبوط لوحة تحكم Dashboard متجر بسيط ارفعها على GitHub و Netlify
لا يصح ذلك، البيانات الكبيرة يتم معالجتها من خلال Pagination أو Lazy Loading، بينما استخدم fetch فقط في حال البيانات صغيرة ومحدودة، أي قائمة بالدول، قائمة التصنيفات، إعدادات الموقع وهكذا، بمعنى لا يتجاوز عدد السجلات المُستردة من قاعدة البيانات 50 إلى 100 سجل. فأحيانًا سيقوم المستخدم بفتح الصفحة وإغلاقها فورًا، فلماذا تجعله يحمل 1000 صورة ومنتج وهو لم يرى سوى أول 5؟ وكذلك هدر للموارد. ولتنفيذ الـ Infinite Scroll أو Pagination فكلاهما نفس المفهوم لكن بشكل مختلف، فاعتمد على Intersection Observer
الأمر آمن، فالتصفح من خلال Cursor Pagination، يعني أن لارافل لا يعتمد على OFFSET أي تخطي عدد معين من الصفوف كما في paginate العادية، بل على جملة WHERE. وبترتيب النتائج بواسطة orderBy('id')، فالصفحة التالية تبدأ من حيث انتهت الصفحة السابقة، ولكي يعلم لارافل أين تبدأ، يحتاج إلى معرفة قيمة id لأخر عنصر تم جلبه. لذلك، الـ cursor هو ببساطة عبارة عن كائن JSON يحتوي على القيم التي تم الترتيب بناءًا عليها، ثم يتم تشفيره بـ Base64، وذاك ليس تشفير لإخفاء البيانات بل ترميز للنقل Encoding. بالتالي
اهم الصفحات الأساسية لقبول موقعك في جوجل أدسنس