في عالم تطوير البرمجيات الحديث، يُعد ضمان الاتساق بين العميل والخادم تحديًا كبيرًا. ظهرت منهجية العقد أولاً (Contract First) كحل فعال، وهي مدعومة الآن بقوة بواسطة المكتبة @feelai/contract.
العقد أولاً (Contract First) هي منهجية تطوير برمجيات يتم فيها تحديد واجهة برمجة التطبيقات (API) قبل التطبيق التفصيلي. بدلاً من كتابة التعليمات البرمجية أولاً ثم تحديد واجهة برمجة التطبيقات، تتطلب هذه المنهجية:
تشمل فوائد منهجية العقد أولاً:
@feelai/contract هي مكتبة npm تساعد في تطبيق منهجية العقد أولاً في مشاريع TypeScript. توفر هذه المكتبة أدوات لتعريف عقود واجهة برمجة التطبيقات بطريقة آمنة من حيث الأنواع (type-safe)، ويمكن مشاركتها بين العميل والخادم دون مشاكل التبعية الدائرية.
typebox لتعريف المخططات (schemas).bun add @feelai/contract
# أو
npm install @feelai/contract
# أو
yarn add @feelai/contractفيما يلي مثال لتعريف عقد لتطبيق إدارة المهام:
import { Contract, defineApiMap, defineSocketMap } from "@feelai/contract";
import { Type } from "typebox";
// تعريف المخطط
export const TaskSchema = Type.Object({
id: Type.String(),
title: Type.String(),
completed: Type.Boolean(),
createdAt: Type.Number(),
});
// تعريف نقاط نهاية واجهة برمجة التطبيقات
const api = defineApiMap({
getTasks: {
output: Type.Array(TaskSchema),
},
createTask: {
input: Type.Object({
title: Type.String(),
}),
output: TaskSchema,
},
});
// تعريف أحداث المقابس
const socket = defineSocketMap({
taskUpdates: {
client: {
subscribe: Type.Object({}),
},
server: {
taskCreated: TaskSchema,
taskUpdated: TaskSchema,
},
},
});
// إنشاء وتصدير العقد
export const todoListContract = new Contract().api(api).socket(socket);
export type TodoListContract = typeof todoListContract;من نقاط القوة في @feelai/contract هي قدرتها على استنتاج الأنواع تلقائيًا:
import { StaticApiMap, StaticSocketMap } from "@feelai/contract";
import { todoListContract } from "./todoListContract";
// أنواع لتنفيذ واجهة برمجة التطبيقات
export type ApiTypes = StaticApiMap<typeof todoListContract>;
// أنواع لتنفيذ المقبس
export type SocketTypes = StaticSocketMap<typeof todoListContract>;تُقدم منهجية العقد أولاً جنبًا إلى جنب مع مكتبة @feelai/contract مقاربة منظمة لتطوير تطبيقات الويب الحديثة. بفضل قدرتها على ضمان أمان أنواع البيانات من البداية إلى النهاية، وتقليل أخطاء الاتصال بين العميل والخادم، ودعم التطوير المتوازي، تعد هذه أداة قيّمة لمشاريع TypeScript ذات النطاق المتوسط إلى الكبير.
للمزيد من المعلومات حول @feelai/contract، تفضل بزيارة: https://www.npmjs.com/package/@feelai/contract