بناء تطبيق كامل باستخدام React و SvelteKit و Laravel API
مقدمة
تشرح هذه المقالة كيفية إنشاء تطبيق كامل بسيط باستخدام React للواجهة الأمامية، و SvelteKit للتعامل مع التوجيه والعرض من جانب الخادم، و Laravel لبناء واجهة برمجة تطبيقات خلفية قوية. توفر هذه المجموعة حلاً حديثًا وعالي الأداء لتطوير الويب.
إعداد Laravel API
أولاً، أنشئ مشروع Laravel جديد:
laravel new my-laravel-api
cd my-laravel-api
بعد ذلك، قم بإنشاء وحدة تحكم وموديل بسيطة للموارد:
php artisan make:model Item -mcr
قم بتحديث ملف الترحيل (database/migrations/*_create_items_table.php) بالهيكل المطلوب. على سبيل المثال:
public function up()
{
Schema::create('items', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->text('description')->nullable();
$table->timestamps();
});
}
قم بتشغيل الترحيلات:
php artisan migrate
قم بتحديث ItemController.php بعمليات CRUD الأساسية:
<?php
namespace App\Http\Controllers;
use App\Models\Item;
use Illuminate\Http\Request;
class ItemController extends Controller
{
public function index()
{
return Item::all();
}
public function store(Request $request)
{
return Item::create($request->all());
}
public function show(Item $item)
{
return $item;
}
public function update(Request $request, Item $item)
{
$item->update($request->all());
return $item;
}
public function destroy(Item $item)
{
$item->delete();
return response()->json(['message' => 'Item deleted']);
}
}
حدد مسارات API في routes/api.php:
<?php
use App\Http\Controllers\ItemController;
use Illuminate\Support\Facades\Route;
Route::resource('items', ItemController::class);
إعداد الواجهة الأمامية SvelteKit
قم بإنشاء مشروع SvelteKit جديد:
npm create svelte@latest my-sveltekit-app
cd my-sveltekit-app
npm install
قم بتثبيت axios لعمل طلبات API:
npm install axios
قم بإنشاء ملف +page.svelte في الدليل src/routes لجلب وعرض العناصر من Laravel API:
<script>
import axios from 'axios';
let items = [];
async function getItems() {
const response = await axios.get('http://localhost:8000/api/items'); // قم بتعديل الرابط إذا لزم الأمر
items = response.data;
}
getItems();
</script>
<h1>العناصر</h1>
{#each items as item}
<div>
<h2>{item.name}</h2>
<p>{item.description}</p>
</div>
{/each}
دمج مكونات React
داخل +page.svelte أو أي مكون Svelte آخر، يمكنك تضمين مكونات React باستخدام svelte-add. أولاً، أضف تكامل svelte-add:
npm install -D svelte-add
npx svelte-add@latest react
ثم، قم بإنشاء مكون React بسيط (على سبيل المثال، src/lib/MyReactComponent.jsx):
// src/lib/MyReactComponent.jsx
import React from 'react';
function MyReactComponent() {
return (
<div>
<p>هذا مكون React مضمن في SvelteKit!</p>
</div>
);
}
export default MyReactComponent;
الآن، قم باستيراد واستخدام مكون React في مكون Svelte الخاص بك:
// src/routes/+page.svelte
<script>
import MyReactComponent from '$lib/MyReactComponent.jsx';
import { onMount } from 'svelte';
let reactComponent;
onMount(() => {
reactComponent = MyReactComponent;
});
</script>
{#if reactComponent}
<svelte:component this={reactComponent} />
{/if}
خاتمة
قدمت هذه المقالة مخططًا أساسيًا لبناء تطبيق كامل باستخدام React و SvelteKit و Laravel. يمكنك التوسع في هذا الأساس لإنشاء تطبيقات أكثر تعقيدًا وغنية بالميزات. تذكر التعامل مع تكوينات CORS في Laravel API الخاص بك لطلبات عبر النطاقات.