Laravel如何与Inertia.js和Vue/React构建现代单页应用
发布时间 - 2025-12-20 00:00:00 点击率:次Laravel + Inertia.js 结合 Vue/React 可构建无需传统 API 的 SPA,通过控制器返回组件与数据,由 Inertia 在前端渲染,实现流畅单页体验。
使用 Laravel 与 Inertia.js 结合 Vue 或 React 是构建现代单页应用(SPA)的一种高效方式。它让 Laravel 负责后端逻辑和路由控制,同时通过 Inertia.js 将前端框架(Vue/React)无缝集成,无需编写传统的 API 接口,也能实现 SPA 的流畅体验。
1. Laravel + Inertia.js 的工作原理
Inertia.js 是一个适配器,连接服务端框架(如 Laravel)和前端 JavaScript 框架。它不依赖 REST API,而是通过控制器返回页面组件名和数据,Inertia 在客户端渲染对应 Vue 或 React 组件。
流程如下:
- Laravel 控制器返回 Inertia::render('Page', $data)
- Inertia 将组件名和数据发送到前端
- 前端根据组件名加载对应的 Vue/React 页面并渲染
- 页面跳转通过 Inertia Link 或 inertia.visit() 实现,避免整页刷新
2. 初始化项目环境
先创建 Laravel 项目并安装 Inertia 支持:
composer create-project laravel/laravel my-spa cd my-spa composer require inertiajs/inertia-laravel
发布 Inertia 视图资源:
php artisan inertia:install
这会生成 resources/js/app.js 和根视图 resources/views/app.blade.php。
3. 集成 Vue 或 React
以 Vue 3 为例:
npm install @inertiajs/vue3 vue@^3
配置 resources/js/app.js:
import { createApp, h } from 'vue'
import { createInertiaApp } from '@inertiajs/vue3'
createInertiaApp({
resolve: name => require(`./Pages/${name}.vue`),
setup({ el, App, props, plugin }) {
const app = createApp({ render: () => h(App, props) })
app.use(plugin)
app.mount(el)
},
})
若使用 React,替换为 @inertiajs/react 并调整入口文件结构即可。
4. 创建页面与路由
在 resources/js/Pages 下创建 Vue 文件,例如 Home.vue:
欢迎来到首页
{{ time }}
在 Laravel 路由中返回该页面:
// routes/web.php use Inertia\Inertia; Route::get('/', function () { return Inertia::render('Home', [ 'time' => now()->format('Y-m-d H:i:s') ]); });
访问根路径时,Inertia 会自动加载 Home 组件并传入时间数据。
5. 页面跳转与数据提交
使用
关于页面
提交表单使用 form.post():
const form = useForm({ name: '' })
form.post('/submit')
后端处理完后可返回 Inertia::render() 刷新页面或重定向。
6. 布局与共享数据
使用中间件共享全局数据:
// app/Http/Middleware/HandleInertiaRequests.php
public function share(Request $request)
{
return [
'auth' => $request->user() ? [
'id' => $request->user()->id,
'name' => $request->user()->name,
] : null,
];
}
在任何组件中通过 props 获取 auth 数据,实现登录状态管理。
基本上就这些。Laravel + Inertia + Vue/React 的组合省去了前后端分离的复杂接口设计,又能享受 SPA 的交互体验,适合中小型项目快速开发。关键是理解 Inertia 的“无 API”模式,把 Laravel 当作页面控制器来用。
# laravel
# php
# vue
# react
# javascript
# java
# js
# 前端
# composer
# vue3
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
深圳网站制作的公司有哪些,dido官方网站?
PHP 500报错的快速解决方法
Laravel如何使用Gate和Policy进行权限控制_Laravel权限判定与策略规则配置
如何用腾讯建站主机快速创建免费网站?
jQuery 常见小例汇总
Laravel怎么解决跨域问题_Laravel配置CORS跨域访问
如何快速搭建FTP站点实现文件共享?
Laravel如何使用模型观察者?(Observer代码示例)
Laravel如何监控和管理失败的队列任务_Laravel失败任务处理与监控
如何用ChatGPT准备面试 模拟面试问答与职场话术练习教程
Laravel Octane如何提升性能_使用Laravel Octane加速你的应用
javascript事件捕获机制【深入分析IE和DOM中的事件模型】
制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?
Laravel如何使用Vite进行前端资源打包?(配置示例)
微信小程序 require机制详解及实例代码
iOS发送验证码倒计时应用
Python企业级消息系统教程_KafkaRabbitMQ高并发应用
JS去除重复并统计数量的实现方法
Android自定义listview布局实现上拉加载下拉刷新功能
如何挑选高效建站主机与优质域名?
Laravel Session怎么存储_Laravel Session驱动配置详解
Laravel如何保护应用免受CSRF攻击?(原理和示例)
Laravel如何实现全文搜索_Laravel Scout集成Algolia或Meilisearch教程
HTML透明颜色代码怎么让图片透明_给img元素加透明色的技巧【方法】
Laravel怎么使用Collection集合方法_Laravel数组操作高级函数pluck与map【手册】
微信h5制作网站有哪些,免费微信H5页面制作工具?
如何构建满足综合性能需求的优质建站方案?
如何在Windows 2008云服务器安全搭建网站?
node.js报错:Cannot find module 'ejs'的解决办法
公司门户网站制作流程,华为官网怎么做?
做企业网站制作流程,企业网站制作基本流程有哪些?
Laravel如何实现本地化和多语言支持?(i18n教程)
Laravel如何生成URL和重定向?(路由助手函数)
Laravel如何实现用户角色和权限系统_Laravel角色权限管理机制
Laravel如何实现邮件验证激活账户_Laravel内置MustVerifyEmail接口配置【步骤】
Android中Textview和图片同行显示(文字超出用省略号,图片自动靠右边)
HTML 中如何正确使用模板变量为元素的 name 属性赋值
Python正则表达式进阶教程_复杂匹配与分组替换解析
Zeus浏览器网页版官网入口 宙斯浏览器官网在线通道
Laravel如何获取当前登录用户信息_Laravel Auth门面使用与Session用户读取【技巧】
微信小程序制作网站有哪些,微信小程序需要做网站吗?
企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?
详解Android——蓝牙技术 带你实现终端间数据传输
如何破解联通资金短缺导致的基站建设难题?
Laravel怎么设置路由分组Prefix_Laravel多级路由嵌套与命名空间隔离【步骤】
Laravel DB事务怎么使用_Laravel数据库事务回滚操作
如何在IIS服务器上快速部署高效网站?
详解Huffman编码算法之Java实现
Laravel如何生成和使用数据填充?(Seeder和Factory示例)
Laravel Eloquent模型如何创建_Laravel ORM基础之Model创建与使用教程


ertia;
Route::get('/', function () {
return Inertia::render('Home', [
'time' => now()->format('Y-m-d H:i:s')
]);
});