I'm always excited to take on new projects and collaborate with innovative minds.

Phone

+20 115 052 9992

Website

https://ibrahimahmed.online/

Social Links

عنوان تلقائي

معرفتش تنام الليلة اللي فاتت عشان موقعك الجديد اللي معمول بـ فيو دوت جي إس (Vue.js SPA) مش ظاهر في نتائج بحث جوجل (Google Search) خالص؟ دي المشكلة الأزليّة اللي

عنوان تلقائي
Reading Count: 2

معرفتش تنام الليلة اللي فاتت عشان موقعك الجديد اللي معمول بـ فيو دوت جي إس (Vue.js SPA) مش ظاهر في نتائج بحث جوجل (Google Search) خالص؟ دي المشكلة الأزليّة اللي بتواجه أي مبرمج أو مطور واجهات أمامية (Front-End Developer) بيقرر يعمل مشروع بيكليه بتطبيقات الصفحة الواحدة (Single Page Applications).

المشكلة باختصار يا صديقي إن بوبات أو عناكب محركات البحث (Search Engine Crawlers) بتدخل على الموقع، بتلاقي صفحة HTML فاضية وليها ملف جافاسكريبت (JavaScript) كبير محتاج يتحمل ويتنفذ عشان المحتوى يظهر. جوجل زمان كان بيقول إنه بيشغل الجافاسكريبت، بس في الواقع العملي، الموضوع بياخد وقت، وفي الغالب الروبوت بيمشي من غير ما يشوف محتوى صفحتك، وبالتالي مفيش أرشفة (SEO)، ومفيش زوار، ومفيش شغل!

الحل التقليدي كان إننا نحول الموقع لـ (Server-Side Rendering - SSR) زي استخدام نُكسْجيه (Nuxt.js)، بس لو مشروعك كبير وقايم فعلاً كـ (Client-Side SPA)، نقل الكود كله لـ SSR ممكن يكون كابوس وهياخد وقت وفلوس كتير. هنا بقى بيجي دور البطل بتاعنا النهاردة: الـ بريرندرينج (Prerendering) وبالتحديد خدمة زي (Prerender.io). تعالى أقولك إزاي تحل المشكلة دي في دقايق معدودة وبأقل مجهود.

يعني ايه اصلا Prerendering وليه هو بديل ذكي للـ SSR؟

عشان نفهم الفكرة ببساطة، تخيل إن الـ Prerendering ده عبارة عن "ممثل قاعد مستني"، أو بمعنى أدق، عملية بنعملها وقت البناء (Build time) أو عند الطلب (On-demand)، بحيث لما روبوت محرك البحث يدخل على موقعك، السيرفر بتاعنا بيدي للروبوت نسخة HTML جاهزة ومحרוقة بكل البيانات والمحتوى، كأن الموقع متبرمج من البداية سيرفر-سايد (SSR).

لكن لما مستخدم حقيقي (Human User) بيدخل، المتصفح بتاعه بيحمل ملفات الفيو دوت جي إس (Vue.js) العادية ويكمل شغل كـ SPA عادي جداً وسريع وتفاعلي. يعني أنت ضربت عصفورين بحجر واحد: حافظت على بنية الـ SPA بتاعتك، وريّحت دماغك من تعقيدات الـ SSR، وفي نفس الوقت خليت محركات البحث تفرح وتشوف كل كلمة مكتوبة في موقعك.

خدمة (Prerender.io) بتسهل الموضوع ده جداً؛ هي عبارة عن وسيط (Middleware) أو خدمة خارجية بتقف بين السيرفر بتاعك وبين عناكب البحث. أول ما تحس إن اللي بيطلب الصفحة هو روبوت (مش بني آدم)، بتجيب له الصفحة جاهزة ومتشاطة (Prerendered HTML)، والموضوع بيتم في أجزاء من الثانية.

خطوات ربط موقع Vue SPA مع Prerender.io بطريقة عملية

تعالى ندخل في الجد ونشوف إزاي نطبق ده عملياً على مشروع فيو (Vue.js). الخطوات مش معقدة، ومحتاجة تركيز بسيط منك.

الخطوة الأولى هي إنك تعمل حساب على موقع (Prerender.io) وتجيب مفتاح الـ API الخاص بيك (API Token). بعد كده، هتروح لمشروعك وتشوف إنت رافع الموقع فين (سواء على نود دوت إس - Node.js Server، أو نايتجريف - Nginx، أو فايبريس - Firebase، إلخ).

لو السيرفر بتاعك مبني بـ (Node.js / Express)، الموضوع أسهل ما يمكن. هتحتاج تنزل الميدل وير الخاص بيهم باستخدام الكود ده في التيرمينال (Terminal):

npm install prerender-node --save

بعد ما تثبت الحزمة، هتروح لملف السيرفر الأساسي (مثل server.js) وتضيف الكود ده عشان تفعل الخدمة:


const express = require('express');
const app = express();

// ضيف الميدل وير الخاص بـ Prerender هنا
app.use(require('prerender-node').set('prerenderToken', 'YOUR_PRERENDER_TOKEN_HERE'));

app.use(express.static('dist'));

app.listen(3000, () => {
    console.log('Server is running on port 3000');
});

بالظبط كده! السطرين دول بيخلوا السيرفر يراقب أي طلب جاي للموقع. لو اللي طالب الصفحة هو جوجل أو بيج كراولر (Googlebot / Bingbot)، السيرفر بيحول الطلب أوتوماتيك لـ (Prerender.io)، واللي بدورها بتبعت للروبوت نسخة الـ HTML الجاهزة والمحملة بكل عناصر الـ (SEO Tags) زي العناوين (Meta Titles) والوصف (Meta Descriptions).

التعامل مع الـ Meta Tags والديناميكية في تطبيقات Vue

عشان تاخد أفضل نتيجة من تحسين محركات البحث (SEO Optimization) مع الـ Prerender، لازم تضمن إن صفحاتك فيها عناوين ووصف متغير حسب الصفحة (Dynamic Meta Tags). في مشاريع فيو، أسهل وأقوى أداة لعمل كده هي (Vue Meta) أو استخدام (Vue Router) مع خطافات التنقل (Navigation Guards).

شوف معايا المثال البسيط ده لاستخدام تحديث العناوين لكل صفحة:


// داخل ملف الـ router أو الـ component
router.beforeEach((to, from, next) => {
    // تغيير عنوان الصفحة بناءً على الـ Route
    document.title = to.meta.title || 'موقعي الافتراضي';
    
    // تحديث الـ Meta Description
    let metaTag = document.querySelector('meta[name="description"]');
    if (metaTag) {
        metaTag.setAttribute('content', to.meta.description || 'وصف افتراضي للموقع');
    }
    
    next();
});

لما (Prerender.io) ييجي يصور الصفحة، الجافاسكريبت هيتنفذ، والـ (Meta Tags دي هتتحدث بناءً على الصفحة اللي الروبوت واقف فيها، وبعدين الخدمة هتاخد لقطة الشاشة (Snapshot) للـ HTML وهي متحدثة وجاهزة. دي التكة اللي بتخلي جوجل يفهم محتوى كل صفحة عندك بدقة شديدة.

كمان، لازم تتأكد إن الـ (Sitemap.xml) بتاعك مظبوط وفيه كل الروابط بتاعتك، وترفعها على (Google Search Console) عشان تسهل على الروبوتات إنها تلاقي الصفحات وتعمل لها Prerender من غير تضييع وقت.

خاتمة ونصيحة من أخ

في النهاية يا صديقي، تقنيات الـ SPA عظيمة جداً وبتدي مستخدم (UX) خيالي وسريع، بس للأسف كانت دايماً مظلومة في جانب الـ SEO. استخدام خدمات زي (Prerender.io) أو حلول الـ Prerendering بشكل عام بيفك الحصار ده وبيخلي موقعك ينافس بقوة في محركات البحث من غير ما تضطر تعيد كتابة الكود من أول وجديد بـ SSR.

نصيحتي ليك كـ مبرمج: متخليش خايف من تفاصيل الـ SEO الفنية تعطلك عن بناء منتج قوي. ابدأ طبق الخطوات دي، جرب موقعك بـ (Inspect -> Disable JavaScript) عشان تشوف الموقع بيظهر إزاي من غير جافاسكريبت، ولو لقيت المحتوى الأساسي ظاهر، اعرف إنك ماشي في الطريق الصح. بالتوفيق، ولو عندك أي استفسار سيبه في الكومنتات!


Share

Related posts

Jul 31, 2026 • 2 min read
Reading Count: 3
عنوان تلقائي

يا هلا بيك يا باشمهندس في عالم تطوير الـ Web Development الواسع! لو انت شغال بـ Frontend Framework ز...

Jul 30, 2026 • 2 min read
Reading Count: 3
عنوان تلقائي

أهلاً بيك يا صديقي المبرمج في مقال جديد من سلسلة شروحات تطوير الويب (Web Development). لو انت شغال ب...

Jul 30, 2026 • 2 min read
Reading Count: 10
ازاي تبني مدونة خارقة السرعة باستخدام Nuxt Content وملفات الـ Markdown؟

ازاي تبني مدونة خارقة السرعة باستخدام Nuxt Content وملفات الـ Markdown؟ يا هلا بيك يا صديقي المبرمج....