[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-81253":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":8,"htmlUrl":8,"language":9,"languages":8,"totalLinesOfCode":8,"stars":10,"forks":11,"watchers":12,"openIssues":11,"contributorsCount":11,"subscribersCount":11,"size":11,"stars1d":11,"stars7d":13,"stars30d":14,"stars90d":11,"forks30d":11,"starsTrendScore":11,"compositeScore":15,"rankGlobal":8,"rankLanguage":8,"license":16,"archived":17,"fork":17,"defaultBranch":18,"hasWiki":19,"hasPages":17,"topics":20,"createdAt":8,"pushedAt":8,"updatedAt":21,"readmeContent":22,"aiSummary":23,"trendingCount":11,"starSnapshotCount":11,"syncStatus":24,"lastSyncTime":25,"discoverSource":26},81253,"laravel-spa","saakiiib\u002Flaravel-spa","saakiiib",null,"JavaScript",28,0,1,3,7,39.2,"MIT License",false,"main",true,[],"2026-06-12 04:01:32","# Laravel SPA — by [Sakib](https:\u002F\u002Fgithub.com\u002Fsaakiiib)\n\nBy default, every link click in Laravel loads a full new page — HTML, CSS, JS, fonts, everything re-downloads. SPA navigation skips that. Only the content changes, the rest stays. Faster, smoother, no white flash between pages.\n\nMost Laravel SPA solutions force you to either abandon Blade entirely (Inertia) or add jQuery (pjax). This package adds that same speed on top of your existing Blade views — no rewrite, nothing changes except how fast it feels.\n\n---\n\n## Quick Start\n\n```bash\ncomposer require saakiiib\u002Flaravel-spa\nphp artisan vendor:publish --tag=spa-assets\n```\n\n> Add `\u002Fpublic\u002Fvendor` to your `.gitignore` to avoid committing published assets.\n\n---\n\n## Setup — `@extends` \u002F `@section`\n\n**1. Layout file**\n\nAdd `@spaContent` to your content wrapper and `@spaEngine` before `\u003C\u002Fbody>`. Make sure `@yield('script')` comes after `@spaEngine`.\n\n```blade\n\u003Cmain @spaContent>\n    @yield('content')\n\u003C\u002Fmain>\n\n@spaEngine\n@yield('script')\n```\n\n**2. Navigation links**\n\nAdd `@spa` to links you want SPA navigation on. Links without `@spa` do a normal full reload.\n\n```blade\n\u003Ca href=\"{{ route('home') }}\" @spa>Home\u003C\u002Fa>\n\u003Ca href=\"{{ route('about') }}\" @spa>About\u003C\u002Fa>\n\u003Ca href=\"{{ route('logout') }}\">Logout\u003C\u002Fa>\n```\n\n**3. Controller**\n\n```php\npublic function home()\n{\n    return spa('pages.home');\n}\n\npublic function about()\n{\n    return spa('pages.about', compact('data'));\n}\n```\n\n**4. Page views — no changes needed**\n\n```blade\n@extends('layouts.app')\n\n@section('title', 'Home')\n\n@section('style')\n    \u003Cstyle>\n        .hero { background: #1a3c6e; color: #fff; padding: 60px; }\n    \u003C\u002Fstyle>\n@endsection\n\n@section('content')\n    \u003Cdiv class=\"hero\">\n        \u003Ch1>Welcome\u003C\u002Fh1>\n    \u003C\u002Fdiv>\n@endsection\n\n@section('script')\n    \u003Cscript>\n        console.log('page loaded');\n    \u003C\u002Fscript>\n@endsection\n```\n\n---\n\n## Setup — `x-layout` components\n\n**1. Layout component**\n\nAdd `@spaContent` to your content wrapper and `@spaEngine` before `\u003C\u002Fbody>`.\n\n```blade\n\u003Chead>\n    \u003Cstyle>\n        \u002F* global styles *\u002F\n    \u003C\u002Fstyle>\n\n    {{ $style ?? '' }}\n\u003C\u002Fhead>\n\u003Cbody>\n    \u003Cmain @spaContent>\n        {{ $slot }}\n    \u003C\u002Fmain>\n\n    \u003Cscript>\n        \u002F* global scripts *\u002F\n    \u003C\u002Fscript>\n\n    @spaEngine\n    {{ $script ?? '' }}\n\u003C\u002Fbody>\n```\n\n**2. Navigation links** — same as above, add `@spa`:\n\n```blade\n\u003Ca href=\"{{ route('home') }}\" @spa>Home\u003C\u002Fa>\n\u003Ca href=\"{{ route('logout') }}\">Logout\u003C\u002Fa>\n```\n\n**3. Controller** — same as above:\n\n```php\npublic function home()\n{\n    return spa('pages.home');\n}\n```\n\n**4. Page views**\n\n```blade\n\u003Cx-app-layout title=\"Home\">\n\n    \u003Cx-slot:style>\n        \u003Cstyle>\n            .hero { background: #1a3c6e; color: #fff; padding: 60px; }\n        \u003C\u002Fstyle>\n    \u003C\u002Fx-slot:style>\n\n    \u003Cdiv class=\"hero\">\n        \u003Ch1>Welcome\u003C\u002Fh1>\n    \u003C\u002Fdiv>\n\n    \u003Cx-slot:script>\n        \u003Cscript>\n            console.log('page loaded');\n        \u003C\u002Fscript>\n    \u003C\u002Fx-slot:script>\n\n\u003C\u002Fx-app-layout>\n```\n\n---\n\n## What works out of the box\n\n- URL updates, back\u002Fforward button, refresh, direct links — all work\n- Per-page styles and scripts load and unload on every navigation\n- Session expiry redirects cleanly instead of breaking\n- Hover prefetch — pages start loading before you even click\n- Works with both `@extends` and `x-layout`\n\n---\n\n## Requirements\n\n- PHP 8.1+\n- Laravel 10, 11, or 12\n\n---\n\n## Contributing\n\nFound a bug or want to improve something? PRs are welcome on [GitHub](https:\u002F\u002Fgithub.com\u002Fsaakiiib\u002Flaravel-spa).\n\n---\n\n## License\n\nMIT — [Sakib](https:\u002F\u002Fgithub.com\u002Fsaakiiib)","该项目提供了一种在 Laravel 应用中实现单页应用（SPA）导航的方式，通过仅加载页面内容变化部分来提高用户体验。其核心功能包括对现有 Blade 视图的无缝集成，无需完全放弃 Blade 或引入额外的库如 jQuery。只需在布局文件和控制器中进行少量配置，即可启用 SPA 功能，支持 URL 更新、浏览器前后导航及刷新等操作。适合希望提升网站响应速度和平滑度，同时保持 Laravel 开发习惯的开发者使用。",2,"2026-06-11 04:04:03","CREATED_QUERY"]