Laravel与Vue项目之间实现数据共享的正确方式是什么
两种实现方案的适用场景及选择建议
两种方案都是Laravel+Vue技术栈下的合法实现,不存在绝对的「正确方式」,需结合业务场景选择:
方案1:服务端直接注入Props
适用场景
页面初始渲染后people数据不需要动态更新、无分页/筛选/搜索等交互需求、组件仅在当前页面复用的场景。
优势
- 减少一次额外的HTTP请求,首屏渲染速度更快,不会出现数据加载阶段的空白/闪烁
- 无需额外编写接口请求、异常处理、加载状态逻辑,代码量更小
注意事项
- 数据量过大时会增大初始HTML的体积,拖慢页面首次加载速度
- 若后续前端对数据有修改操作,需手动同步服务端状态,否则会出现前后端数据不一致
- Blade中传递数组类数据时需做JSON序列化,标准写法参考:
<example-component :people="{{ json_encode($people) }}"></example-component>
你提到的@prop是Laravel组件拓展的语法,功能等价于上述写法。
方案2:Axios异步请求获取
适用场景
数据需要动态刷新、有分页/筛选/搜索/增删改查等交互需求、组件需要在多个页面跨场景复用的场景。
优势
- 前后端逻辑解耦更彻底,组件复用性更高,不需要每个渲染该组件的Blade页面都提前注入
people参数 - 数据始终和服务端保持同步,后续新增交互功能的改造成本极低
- 支持搭配loading状态、骨架屏优化用户体验
注意事项
- 你当前写的控制器已经兼容了Ajax请求,直接对当前页面地址发起GET类型的Ajax请求即可拿到JSON格式的
people数据,不需要额外新增路由 - 需额外处理请求异常、加载状态,首屏渲染会有等待时间
- 需注意接口的权限校验,避免未授权用户直接访问接口拿到数据
选择建议
如果是纯静态的人员列表展示页,优先选择方案1;如果是带交互的管理类页面,优先选择方案2。
内容的提问来源于stack exchange,提问作者El Hombre Sin Nombre
相关产品推荐
相关产品推荐

