🔧

RedwoodJS

إطار عمل Jamstack كامل (Full-Stack Jamstack Framework)

(3/5)
👁️ 4 مشاهدة
📅 02 Jul 2026
⚛️ React

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

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

📖 الوصف

RedwoodJS هو إطار عمل full-stack JavaScript مبني على React، GraphQL، و Prisma. يوفر حلاً كاملاً يشمل الواجهة الأمامية (React)، الواجهة الخلفية (GraphQL API)، وقاعدة البيانات (Prisma ORM). يستخدم Netlify أو Vercel للـ deployment. RedwoodJS يهدف لتبسيط بناء تطبيقات Jamstack مع TypeScript end-to-end، ...

🎯 يستخدم في

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

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

تطبيقات SaaS

لوحات التحكم الإدارية

تطبيقات مع GraphQL API

startups والمشاريع الصغيرة

المميزات

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

Full-stack framework (React + GraphQL + Prisma)

GraphQL API مدمج

Prisma ORM لإدارة قاعدة البيانات

Authentication مدمج (Auth0

Netlify

إلخ)

TypeScript end-to-end

CLI generators

Testing مدمج

Deploy لـ Netlify/Vercel

⚠️ العيوب

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

×

تعقيد في الإعداد للمشاريع الكبيرة

×

GraphQL layer قد يكون overkill

×

حجم الحزمة كبير

×

أقل شهرة من Next.js

×

أداء أبطأ من الحلول المتخصصة

🔄 البدائل

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

Next.js
tRPC
Remix

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

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

Example Code
// web/src/pages/PostsPage/PostsPage.tsx
import { useQuery } from '@redwoodjs/web';
import { Link, routes } from '@redwoodjs/router';

const POSTS_QUERY = gql`
  query PostsQuery {
    posts {
      id
      title
      createdAt
    }
  }
`;

export default function PostsPage() {
  const { data, loading } = useQuery(POSTS_QUERY);

  if (loading) return <div>جاري التحميل...</div>;

  return (
    <div>
      <h1>المقالات</h1>
      <ul>
        {data.posts.map(post => (
          <li key={post.id}>
            <Link to={routes.post({ id: post.id })}>
              {post.title}
            </Link>
          </li>
        ))}
      </ul>
    </div>
  );
}

// api/src/graphql/posts.sdl.ts
export const schema = gql`
  type Post {
    id: Int!
    title: String!
    body: String!
    createdAt: DateTime!
  }

  type Query {
    posts: [Post!]!
    post(id: Int!): Post
  }

  input CreatePostInput {
    title: String!
    body: String!
  }

  type Mutation {
    createPost(input: CreatePostInput!): Post!
  }
`;

// api/src/services/posts.ts
import { db } from 'src/lib/db';

export const posts = () => db.post.findMany();

export const post = ({ id }: { id: number }) => 
  db.post.findUnique({ where: { id } });

export const createPost = ({ input }: { input: CreatePostInput }) =>
  db.post.create({ data: input });

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

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