React / الأداء والحدود الموثوقة / الدرس 16
حدود الخادم والعميل والإطار
ميز التنفيذ والبيانات المرسلة وميزات الخادم دون اعتبار توجيه العميل تفويضا.
في هذه الصفحة
أهداف الدرس
- فصل ثلاثة مفاهيم معمارية
- نقل عرض عام مقصود فقط
- أفعال الخادم مداخل تتطلب تحققًا
فصل ثلاثة مفاهيم معمارية
ينفذ العميل التفاعل، وتنتج SSR HTML للربط، وتعمل Server Components ببيئة منفصلة وتمتزج بالعميل عبر تكامل. ليست مترادفات؛ قد يشارك Client Component بترميز الخادم فلا يعني اسمه عدم التقييم قبل المتصفح دائما. اتبع مخطط وحدات الإطار ولا تتوقع من React خادما وموجها وقاعدة وسياسة أمنية كاملة.
حد الوحدة يحدد ما يرسل
في تكامل RSC ينشئ use client حد وحدات للكود واستيراداته، لا مفتاح عنصر أو صندوق حماية. يجب أن تقبل البيانات عقد التسلسل المدعوم وألا تعبر الأسرار لمجرد مصدرها الخادمي. احفظ القدرات خلف حد مفروض. لا ينفذ محلل يقبل السلسلة دلالات RSC دون إطار وأدوات متوافقة.
نقل عرض عام مقصود فقط
ينتقي المثال العنوان والمقاعد من كائن مصطنع، وهو JavaScript عادية لا حد خادم مفروض ولا يخفي العينة من المتصفح. يجب أن يحدث الانتقاء الحقيقي قبل التسلسل والحزمة مع التفويض. إرسال السجل كله ثم إخفاء حقول JSX يبقيها لدى العميل. يكمل التقليل التفويض ولا يعوضه.
export function publicView(record) { return { title: record.title, seats: record.seats }; }
const view = publicView({ title: "Alpha workshop", seats: 8, internalNote: "Synthetic private field" });
export default function App() { return <main><h1>{view.title}</h1><p>Seats: {view.seats}</p></main>; }
Alpha workshop
Seats: 8
يوضح الانتقاء شكلا عاما ولا يفرض السرية لأن العينة كلها بحزمة محلية.
تحديد ملكية التفاعل
تحوي الوحدة use client وعدادا؛ يحددها إطار RSC حد عميل، وتبقى السلسلة خاملة بمضيف 18 فلا يختبر إلا العداد. تنتمي الحالة والأحداث وواجهات المتصفح لعميل مناسب. يمرر الخادم البيانات والمراجع المدعومة وفق التكامل، ولا تعمم نقل كل دالة ونسخة دون تغيير.
"use client";
import { useState } from "react";
export default function App() { const [count, setCount] = useState(0); return <main><h1>Client interaction</h1><button type="button" onClick={() => setCount(c => c + 1)}>Count {count}</button></main>; }
Initial button: Count 0. After click: Count 1.
يفسر الإطار التوجيه ويختبر المضيف المحلي التفاعل فقط لا بناء RSC.
أفعال الخادم مداخل تتطلب تحققًا
تعرض أفعال الخادم سلوكا وفق التكامل ولا يمنح التوجيه تفويضا. تحقق من المدخل والهوية والصلاحية وحد العمل والتكرار عند الحد. تثبت React 19 المكونات للتطبيق لكن قد تتغير واجهات بناء الأطر بين الإصدارات الفرعية وتحتاج تنسيقا. لا تبن نقلا من داخليات غير موثقة، بل إطارا مدعوما واختبار حد كامل منفصلا عن العميل.
الأخطاء الشائعة وإصلاحها
يظهر سر بحزمة العميل
- لماذا يحدث؟
- عبر قبل التقليل.
- كيف تصلحه؟
- انتق وفوض بالخادم قبل الإرسال.
- كيف تتجنب تكراره؟
- راجع البيانات والاستيرادات.
يُفترض أن التوجيه ينفذ RSC
- لماذا يحدث؟
- لا يملك المضيف التكامل.
- كيف تصلحه؟
- استخدم أدوات متناسقة مدعومة.
- كيف تتجنب تكراره؟
- ميز التحليل والاختبار الكامل.
يثق الفعل بمستدعي الواجهة
- لماذا يحدث؟
- اعتبر التوجيه تفويضا.
- كيف تصلحه؟
- تحقق وفوض كل عملية.
- كيف تتجنب تكراره؟
- اختبر المباشر المعزول.
اختبر فهمك
1. لماذا لا يحمي إخفاء الحقل في JSX؟
اعرض الحل المشروح
إذا أرسل الكائن يستطيع المستخدم فحصه مهما أخفاه العرض. أزل غير العام بالخادم وافرض الوصول قبل التسليم؛ فالعرض ليس حد سرية.
2. ماذا يثبت مثال use client المحلي وما المتبقي للإطار؟
اعرض الحل المشروح
يثبت العداد لا تقسيم الوحدات والتسلسل والنقل وSSR والتفويض، وتحتاج تلك بناء الإطار وخادمه بإصدارات متوافقة.
أهم ما تعلمته
- SSR وRSC والعميل مفاهيم مختلفة.
- ليست التوجيهات تحقق أمان.
- اختبر التكامل منفصلا.