🔧

Qwik City

إطار عمل Qwik شامل (Qwik Meta-Framework)

(2/5)
👁️ 4 مشاهدة
📅 02 Jul 2026
🌐 عام

مستوى الخبرة المطلوب:

🔗 زيارة الموقع الرسمي
2
تقييم المستخدمين
التصنيف 🔧 Meta-Frameworks
المشاهدات 4
تاريخ الإضافة 02/07/2026
آخر تحديث 02/07/2026

📖 الوصف

Qwik City هو طبقة التطبيق لـ Qwik تُقدم نظام توجيه قائم على الملفات، وdata loaders، وserver functions. مشابه لـ Next.js أو Nuxt لكن مبني على مفهوم Resumability الخاص بـ Qwik. Qwik City يوفر file-based routing، route loaders (data fetching)، وactions (form submissions). يدعم streaming و resumability...

🎯 يستخدم في

مجالات استخدام هذه الأداة

تطبيقات Qwik كاملة

مواقع التجارة الإلكترونية

تطبيقات تتطلب أداء عالي

Progressive Web Apps

Edge-deployed applications

المميزات

أبرز مميزات هذه الأداة

Resumability (لا hydration)

File-based routing

Route loaders و actions

Server functions (server$)

Streaming SSR

Edge-deployment ready

TypeScript مدمج

Instant interactivity

⚠️ العيوب

نقاط يجب مراعاتها

×

إطار جديد نسبياً

×

نظام بيئي صغير

×

مفهوم Resumability قد يكون غريباً

×

موارد تعليمية محدودة

🔄 البدائل

أدوات بديلة يمكنك استخدامها

Qwik (بدون City)
Astro
Next.js

💻 مثال على الاستخدام

كيفية استخدام هذه الأداة

Example Code
// src/routes/index.tsx
import { component$ } from '@builder.io/qwik';
import { routeLoader$ } from '@builder.io/qwik-city';

export const useGetPosts = routeLoader$(async () => {
  const posts = await db.post.findMany();
  return posts;
});

export default component$(() => {
  const posts = useGetPosts();

  return (
    <div>
      <h1>المقالات</h1>
      <ul>
        {posts.value.map(post => (
          <li key={post.id}>
            <a href={`/posts/${post.id}`}>{post.title}</a>
          </li>
        ))}
      </ul>
    </div>
  );
});

// src/routes/posts/[id]/index.tsx
import { component$ } from '@builder.io/qwik';
import { routeLoader$, server$ } from '@builder.io/qwik-city';

export const useGetPost = routeLoader$(async ({ params }) => {
  const post = await db.post.findUnique({ 
    where: { id: params.id } 
  });
  return post;
});

export const updatePost = server$(async (id: string, data: any) => {
  await db.post.update({ where: { id }, data });
});

export default component$(() => {
  const post = useGetPost();

  return (
    <article>
      <h1>{post.value?.title}</h1>
      <p>{post.value?.content}</p>
    </article>
  );
});

📚 أدوات أخرى في Meta-Frameworks

قد يعجبك أيضاً