مرجع سريع

ورقة مساعدة لإطار عمل Koa.js

مرجع سريع لـ Koa.js: نموذج البصلة للبرمجيات الوسيطة، تدفق async/await، كائن السياق ctx، والتوجيه ومعالجة الأخطاء.

· تاريخ النشر

Koa هو إطار عمل وسيط قوي ومرن لبيئة Node.js صممه منشئو إطار Express.

الخادم الأساسي ونموذج البصلة (Onion Middleware)

const Koa = require('koa');
const app = new Koa();

// برمجية وسيطة لتسجيل الطلبات (تتدفق للأمام وللخلف)
app.use(async (ctx, next) => {
  const start = Date.now();
  await next(); // تمرير التحكم إلى البرمجية الوسيطة التالية
  const ms = Date.now() - start;
  console.log(`${ctx.method} ${ctx.url} - ${ms}ms`);
});

// برمجية وسيطة لإنشاء الاستجابة
app.use(async (ctx) => {
  ctx.body = { message: 'Hello from Koa!' };
});

app.listen(3000, () => console.log('Server running on http://localhost:3000'));

مرجع كائن السياق (Context - ctx)

// فحص بيانات الطلب الوارد
ctx.method;             // "GET", "POST", etc.
ctx.url;                // Full URL path
ctx.query;              // Parsed query string object
ctx.headers;            // Request headers object
ctx.get('User-Agent');  // دالة مساعدة لقراءة الترويسة

// بناء وتنسيق الاستجابة
ctx.status = 200;       // تعيين رمز حالة HTTP
ctx.body = 'Hello';     // نص أو مخزن مؤقت أو دفق أو كائن JSON
ctx.set('X-Custom', 'Value'); // تعيين ترويسة استجابة مخصصة
ctx.type = 'json';      // اختصار لتحديد Content-Type
ctx.redirect('/login'); // إرسال إعادة توجيه 302

معالجة الأخطاء المركزية

app.use(async (ctx, next) => {
  try {
    await next();
  } catch (err) {
    ctx.status = err.status || 500;
    ctx.body = { error: err.message };
    ctx.app.emit('error', err, ctx);
  }
});

app.on('error', (err, ctx) => {
  console.error('Server error:', err);
});

المراجع والروابط

موضوعات ذات صلة