在页面之间共享数据-Laravel Vue

时间:2019-08-13 13:58:47

标签: laravel vue.js

我目前正在研究Vue,作为我的Laravel后端的前台。在做任何事情之前,我想问几件事。

  1. 假设我有一个主模板-用户个人资料。首次访问用户个人资料时,我会获得他的所有数据(假设地址为-另一个标签,个人数据为另一个标签,以及n个特定于Tabs)。每当我访问用户/ user / 1时,我都会查询其所有子选项卡并在这些选项卡之间共享此数据(以减少调用API)。这样的尝试可能吗?

  2. 当我第一次查看Vue时,首先要担心的是它使用Axios(ajax),并且我并不想公开端点,配置文件数据是可公开访问的,因此它不像只需在身份验证之后进行设置即可。有办法预渲染数据吗?

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

  1. 是的,肯定-Vue与Laravel的通信主要通过API完成,尤其是如果您涵盖了Vue.js的整个前端,而不是Vue和Bladee的混合。

  2. 有一些方法可以“防止”滥用您的公共API,但让我们面对现实-可以绕开任何东西,因为限制公共API会限制您网站的工作方式。 一种方法是将会话配置为“擦拭关闭”,然后在有人进入网站时生成令牌-这样,只有拥有有效令牌(当前在网站上)的人才能使用公共API。但这是两个刃的剑。

答案 1 :(得分:1)

我认为,解决这两个问题的方法是将所需的数据从控制器传递到Blade模板,然后从那里回显为json,在Vue端,您将其接受为组件属性

一个例子:

@extends('layouts.user-profile')

@section('user-data')
    <user-component
        :data="{{ $user }}"
    >
    </user-component>
@endsection

这里的重要部分是:data={{ $user }}。在这里,您回显了$ user php变量,Laravel会将其自动转换为json。

如果您不熟悉Vue组件道具,请参见以下文档:https://vuejs.org/v2/guide/components.html#Passing-Data-to-Child-Components-with-Props