我们可以在vue路由中使用laravel刀片模板而不是vue组件吗?

时间:2019-06-25 13:30:55

标签: laravel vue.js laravel-5

是否可以使用laravel刀片模板而不是vue组件来通过vue路由进行路由?我希望像在Spa中使用vue路由那样路由刀片文件而不刷新页面。

import App from './views/App'
import Hello from './views/Hello'
import Home from './views/Home'
const router = new VueRouter({
    mode: 'history',

    routes: [
        {
            path: '/',
            name: 'home', 
            component: Home //Vue Component
        },
        {
            path: '/hello',
            name: 'hello',
            component: Hello, //Vue Component
        },
    ],
});

我想使用刀片文件代替我已经命名为home和hello的vue组件

2 个答案:

答案 0 :(得分:0)

据我所知,你做不到。由于Laravel实际上并没有向您提供*.blade.php文件,而是将它们编译为纯PHP,因此将它们放入storage/framework/views (默认情况下)文件夹中,然后提供服务。

来自official docs

  

实际上,所有Blade视图都被编译为纯PHP代码并进行缓存,直到对其进行修改

因此,在任何情况下,都必须进行页面刷新来提供其他PHP文件。

答案 1 :(得分:0)

您可以使用ajax获取html作为响应并在vue中呈现。

在您的控制器中:

public function renderHtml()
{
   $data = ... ;
   $html = view('test',compact('data')->render();
   return response()->json($html);
}

在您的Vue组件中,使用普通JS或jquery获取标记并将其绑定到组件

fetch('renderhtml')
   .then(response => () {
       element.innerHTML(response.data);
});

请注意,这并不是每种情况下真正可靠的解决方案。