React على Cloudflare Workers باستخدام Hono
أعدد Cloudflare Worker باستخدام Hono وrenderToReadableStream لتقديم صفحات React من الحافة
React على Cloudflare Workers باستخدام Hono درس مجاني في React Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في React Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة React Academy 4 دروس في المجموع.
ما هو Hono؟
Hono هو إطار عمل ويب خفيف وسريع للغاية، صُمّم للعمل على بيئات تشغيل Edge، بما في ذلك Cloudflare Workers وDeno Deploy وBun وNode.js. وتستلهم واجهته البرمجية تصميمها من Express، لكنها بُنيت من الأساس وفق معايير الويب، مثل Fetch API وRequest/Response، مما يجعلها ملائمة طبيعيًا لبيئات Edge.
إنشاء Cloudflare Worker باستخدام Hono
إنشاء مشروع Hono جديد لـ Cloudflare Workers أمر مباشر: إذ يطلب منك npm create hono@latest اختيار قالب، ثم اختيار "cloudflare-workers"، وينشئ مشروعًا مهيّأ مسبقًا باستخدام wrangler، وهي واجهة Cloudflare لسطر الأوامر، وتبعية Hono.
إضافة SSR لـ React
لتصيير React على الخادم داخل Worker من Hono، ثبّت react وreact-dom و@types/react، ثم استورد renderToReadableStream من react-dom/server. وهذه الدالة جزء من واجهة البث في React 18، وقد صُممت للبيئات التي تدعم Web Streams API، وهو ما تفعله Cloudflare Workers.
معالج المسار في Hono
يستدعي معالج مسار SSR المعتاد renderToReadableStream مع مكوّن React الجذر، وينتظر الدفق، ثم يستخدم c.body(stream, { headers: { "Content-Type": "text/html" } }) أو c.html(htmlString) لإرسال الاستجابة. وينتج الدفق أجزاءً من HTML يمكن للمتصفح تصييرها تدريجيًا.
نوع القيمة المعادة من renderToReadableStream
تعيد renderToReadableStream وعدًا Promise يُحل إلى ReadableStream من أجزاء HTML. ويتوافق ReadableStream هذا مع Web Streams API، ويمكن تمريره مباشرةً بوصفه جسم كائن Response، مما يجعله ملائمًا تمامًا لمعالج fetch في Cloudflare Workers.
التغليف داخل هيكل HTML
ينتج دفق React لغة HTML لشجرة المكوّنات، لكنه لا ينتج المستند المحيط بها. لذلك يجب إدخال الدفق في هيكل HTML: سلسلة تحتوي على doctype، وعنصر head الذي يتضمن وسوم meta ورابط CSS، ووسم body الافتتاحي، ثم دفق React، ثم وسمَي body وhtml الختاميين.
تقديم الأصول الثابتة
يحتاج حزمة React العميلة التي أنشأها Vite إلى أن تُقدَّم إلى جانب Worker. وتتولى Cloudflare Pages أو ميزة Workers Assets ذلك؛ إذ يوجّه c.env.ASSETS.fetch(request) طلبات الأصول، مثل JS وCSS والصور، إلى الملفات الثابتة التي رُفعت مع عملية نشر Worker.
نقطة الإدخال worker.js
يصدّر ملف إدخال Worker كائنًا افتراضيًا يتضمن معالج fetch: export default { fetch: app.fetch }. وتكون دالة app.fetch في Hono متوافقة أصلًا مع معالج fetch؛ فهي تتلقى Request وتعيد Response، ولذلك تتصل مباشرةً ببيئة تشغيل Workers.
التطوير المحلي باستخدام Wrangler
يشغّل wrangler dev خادم تطوير محليًا يحاكي بيئة تشغيل Cloudflare Workers على جهازك. ويراقب تغييرات الملفات ويعيد التحميل تلقائيًا، موفرًا دورة تطوير محلية سريعة قبل النشر إلى الإنتاج.
النشر إلى Cloudflare
يجمع wrangler deploy شيفرة Worker الخاصة بك ويرفعها إلى شبكة Cloudflare، فتصبح متاحة في أكثر من 300 موقع Edge خلال ثوانٍ. ويحدد ملف الإعداد wrangler.toml معرّف حسابك واسم Worker وأي ربط بمساحة أسماء KV أو قاعدة بيانات D1.
الترطيب باستخدام bootstrapScripts
لإتاحة التفاعل من جهة العميل، مرّر bootstrapScripts: ['/assets/client.js'] إلى renderToReadableStream. وستُدخل React وسم script في HTML لتحميل حزمة العميل واستدعاء hydrateRoot على DOM المصيّر من الخادم، مما يجعل الصفحة تفاعلية بعد تحميل JavaScript.
نوع القيمة المعادة من renderToReadableStream
ماذا تعيد renderToReadableStream؟
مراجعة الدرس
يوفر Hono إطار HTTP خفيفًا ومصممًا أصلًا لـ Edge، ويتكامل بسلاسة مع renderToReadableStream في React. وتصدّر نقطة إدخال Worker app.fetch مباشرةً إلى بيئة تشغيل Workers، بينما تُقدَّم الأصول الثابتة عبر عمليات ربط ASSETS، ويتولى wrangler التطوير المحلي والنشر إلى الإنتاج. وتربط bootstrapScripts لغة HTML المتدفقة بحزمة الترطيب من جهة العميل.
الأسئلة الشائعة
هل درس «React على Cloudflare Workers باستخدام Hono» مجاني؟
نعم — نص درس «React على Cloudflare Workers باستخدام Hono» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة React Academy، انتقل إلى CoddyKit PRO. تتضمن دورة React Academy 4 دروس في المجموع.
ماذا ستتعلم في «React على Cloudflare Workers باستخدام Hono»؟
أعدد Cloudflare Worker باستخدام Hono وrenderToReadableStream لتقديم صفحات React من الحافة تتمرن على React Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ React Academy؟
لا تُشترط خبرة سابقة. React Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.
كم من الوقت يستغرق درس «React على Cloudflare Workers باستخدام Hono»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس React Academy هذا؟
نعم. كل درس في React Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- ما العرض عند الحافة ولماذا يهم؟
- React على Cloudflare Workers باستخدام Hono
- بث SSR من الحافة
- استراتيجيات التخزين المؤقت عند الحافة لتطبيقات React