Pengalaman developer Laravel, dikompilasi menjadi satu binary native.
Route, form request, ORM gaya Eloquent, token Sanctum, queue, dan scheduler, dalam Dart. Server-nya satu executable hasil kompilasi AOT yang memakai semua core, dan berjalan berdampingan dengan aplikasi Laravel Anda di database yang sama.
Laravel
Route::post('/posts', [PostController::class, 'store'])
->middleware('auth:sanctum');
public function store(StorePostRequest $request)
{
$post = Post::create($request->validated());
return new PostResource($post);
}Daravel
router.post('/posts', posts.store)
.middleware(const ['auth'])
.validates(const StorePostRequest())
.returns(PostResource.schema, name: 'Post');
Future<Object?> store(Request request) async {
final post = await Post.create(request.validated().toMap());
return PostResource(post);
}Form request dijalankan sebelum handler, menjawab 403 atau 422 dalam format Laravel, dan deklarasi yang sama mendokumentasikan route di OpenAPI.
Laravel
$users = User::with('posts')
->withCount('posts')
->where('active', true)
->paginate();
$user->roles()->sync([2, 3]);Daravel
final users = await User.query()
.with_(['posts'])
.withCount('posts')
.where('active', true)
.paginate();
await user.sync('roles', [2, 3]);Query builder, eager loading, dan JSON paginasi yang sama. with adalah kata kunci di Dart, jadi namanya with_.
Laravel
DB::transaction(function () use ($data) {
$order = Order::create($data);
// Dispatched after the commit.
SendReceipt::dispatch($order);
});Daravel
await DB.transaction(() async {
final order = await Order.create(data);
// Dispatched after the commit.
await Queue.dispatch(SendReceipt(order.id));
});Transaksi mengikuti zone request: panggilan bertingkat menjadi savepoint, dan job menunggu commit terluar atau dibuang saat rollback.
Laravel
$stats = Cache::remember('stats', 60, fn () => Stats::compute());
Cache::lock('report')->block(5, fn () => Report::build());
Route::get('/search', SearchController::class)
->middleware('throttle:60,1');Daravel
final stats = await Cache.remember(
'stats', const Duration(minutes: 1), () => Stats.compute());
await Cache.lock('report')
.block(const Duration(seconds: 5), () => Report.build());
router.get('/search', search.index)
.middleware(const ['throttle:60,1']);Dengan beberapa worker isolate, lock, cache proses, dan rate limit dijaga oleh isolate coordinator: 60 per menit berarti 60 untuk seluruh server, tanpa Redis.
Laravel
Queue::fake();
$this->actingAs($user)
->postJson('/api/posts', ['title' => 'Hello'])
->assertCreated()
->assertJsonPath('data.title', 'Hello');
Queue::assertPushed(PublishPost::class);Daravel
final queue = Queue.fake();
(await client.actingAs(user)
.post('/api/posts', json: {'title': 'Hello'}))
.assertCreated()
.assertJsonPath('data.title', 'Hello');
queue.assertPushed<PublishPost>();Feature test menjalankan kernel sungguhan di memori, me-rollback database setelah setiap test, dan memalsukan queue, event, storage, HTTP, dan waktu.
Yang Anda dapat dari Dart tanpa kehilangan Laravel
Setiap poin menaut ke bab yang menjelaskannya, dan masing-masing diperiksa oleh test suite.
- Satu bundle native
- Aplikasi dikompilasi AOT menjadi kode mesin, dengan SQLite terbawa. Server tidak butuh SDK, runtime, atau source code.
- Tanpa reflection, tanpa langkah build
- Generator menulis Dart biasa ke registry yang eksplisit, jadi compiler melihat persis kode yang Anda baca.
- Semua core di satu port
- Supervisor menjalankan worker isolate, me-respawn yang crash, dan menguras request saat SIGTERM; coordinator menjaga lock dan rate limit tetap benar.
- State request tetap di request-nya
- Setiap request, job, dan command berjalan di zone sendiri, jadi facade dan transaksi tidak bocor ke request lain.
- Berdampingan dengan Laravel, di database yang sama
- Token, hash bcrypt, payload Crypt, JSON error, dan tabel bersama mengikuti Laravel 12. Pindahkan endpoint satu per satu.
- Route yang mendokumentasikan dirinya
- Validasi dan respons yang dideklarasikan menjawab 403 dan 422 sebelum handler, dan menghasilkan OpenAPI 3.1.
- Pengaman bawaan
- Hashing di luar event loop, lint untuk interpolasi SQL, serta suite keamanan dan konformansi Laravel di CI.
Diukur, bukan diklaim
Harness benchmark membangun server secara AOT dan menjalankannya berdampingan dengan server dart:io polos di mesin yang sama.
Runner Linux GitHub Actions, 4 CPU, run benchmark 40092549095. Metode dan semua skenario: Performa.
Paket
Diterbitkan bersama di pub.dev dengan satu versi.
| daravel | Framework-nya. |
| dartisan_cli | Proyek, generator, hot reload, migrasi, build native. |
| daravel_test | TestClient, helper database, fake, matcher konformansi Laravel. |
| daravel_lints | Aturan lint untuk aplikasi Daravel. |
| daravel_horizon, daravel_socialite, daravel_reverb | Dashboard queue, login OAuth, WebSocket. (Direncanakan) |
| daragic | Generator proyek Laravel ⇄ Daravel. (Direncanakan) |