البدء
ثبّت فقط الأجزاء التي تحتاج إليها خدمتك. تبدأ خدمة HTTP معتادة بالحزم @go-like/context و@go-like/core و@go-like/web، مع إطار Web يوفّر معالج Fetch أصلياً. أما الاستدعاءات الداخلية فتضيف @go-like/client و@go-like/transport و@go-like/transport-http. يبقى اكتشاف الخدمات والإعداد والتخزين اختيارات صريحة، ولا تظهر كإعدادات افتراضية مخفية.
IMPORTANT
يستخدم هذا checkout حزم workspace:* بالإصدار 0.0.1. لا يثبت رقم manifest توفر الحزم على npm؛ تحقّق من النشر بصورة مستقلة قبل التثبيت خارج workspace.
bun install --frozen-lockfile
bun run test:e2e:examples
bun run --cwd examples/vanilla-web startbun add @go-like/context @go-like/core @go-like/webأنشئ src/main.ts:
import process from "node:process"
import { background } from "@go-like/context"
import { afterStart, context, name, newApp, server, stopTimeout } from "@go-like/core"
import { signal } from "@go-like/core/node"
import type { Handler } from "@go-like/web"
import { newNodeServer, port } from "@go-like/web/node"
const handler: Handler = (request) => {
const path = new URL(request.url).pathname
return Response.json({ message: "hello from go-like", path })
}
const webServer = newNodeServer(handler, port(3000))
const app = newApp(
context(background()),
name("hello"),
server(webServer),
stopTimeout(30_000),
signal(),
afterStart(async function announceReady(ctx): Promise<void> {
await webServer.endpoint(ctx)
process.stdout.write("GO_LIKE_EXAMPLE_READY=hello\n")
})
)
await app.run()شغّل الخدمة:
bun run src/main.tsانتظر ظهور GO_LIKE_EXAMPLE_READY=hello قبل إرسال الطلبات. يمكن لأي كائن يحقق عقد Server بنيوياً أن ينضم إلى التطبيق. توفّر حزم مثل @go-like/croner و@go-like/bullmq و@go-like/pino و@go-like/winston محوّلات لمكتبات شائعة، لكنها لا تستبدل تلك المكتبات ولا تنسخ جميع خياراتها إلى واجهة جديدة.
أنشئ بيانات الاعتماد وعملاء الشبكة وإعداد إطار العمل داخل شيفرة التطبيق. مرّر إلى go-like أقل قدرة لازمة، وغالباً ما تكون كائناً أصلياً موجوداً أو دالة fetch محقونة. بهذه الطريقة تصبح الاختبارات حتمية، ويظل واضحاً عند الإيقاف من يملك كل اتصال أو مستمع ومن تقع عليه مسؤولية إغلاقه.