Я просто использую один экземпляр Vue.
У меня есть макет мастер-блейда, в котором раздел body выглядит как приведенный ниже код, и я расширяю его для всех страниц. В основном это шаблон с тегом head, заполненным @yield('tags_like_meta', default_value)
и некоторыми другими импортами JavaScript.
<body>
<div id="app">
@yield('contents')
</div>
</body>
И затем у меня есть один экземпляр Vue, подобный этому, в моем файле js.
const app=new Vue({el:"#app"});
Для разных страниц я использую Vue-router для динамической загрузки компонента. Например, если я хочу, чтобы моя страница контактов загружалась через Vue, мой contact_page.blade.php
будет выглядеть следующим образом
@extends(layout.master)
@section('contents')
<router-view></router-view>
@endsection
И Vue-router будет обрабатывать рендеринг, если у меня указан URL-адрес страницы контактав маршрутах.
Vue.use(VueRouter);
const router = new VueRouter({
mode: 'history',
routes: [
{
path: '/contact',
name: 'contact',
component: () => import('./components/contact/index')
}]
});
Таким образом, вы можете работать с одним экземпляром Vue (как упомянуто в документации)