Предложения и идеи гибридной структуры MPA / SPA Laravel + Vue.js - PullRequest
0 голосов
/ 14 сентября 2018

Я подумал о следующем гибриде MPA - SPA, где я в основном воспринимаю каждую страницу как SPA, но по-прежнему перезагружаю страницы для перехода с одной страницы на другую (index.blade.php в posts.blade.php), как обычно MPA. Этот метод использует мощные функции маршрутизации laravel, сеанса и аутентификации для рендеринга шаблона блейда, который содержит один компонент vue.js.

Представьте, что вы на главной странице, у вас будет что-то вроде этого:

@extends('layouts.master')
@section('content')
<body id="vue_root">
    <page-index data={{ json encoded data from backend }}></page-index>
</body>
@endsection

Как видите, я передаю объект json в качестве компонента prop to vue, этот объект содержит все необходимые данные для визуализации vue.

При использовании этого подхода к обработке каждой страницы как компонента, я могу использовать отдельные файлы vue.js, чтобы содержать всю разметку, логику (методы и стиль компонента vue) в одном файле, что облегчит мне тестирование и отладки.

У меня есть один корневой экземпляр vue.js, где я регистрирую все компоненты страницы.

Однако, поскольку я использую контроллеры laravel в качестве бэкэнда для извлечения всех данных вместе с представлениями блейдов, мне также придется создавать компоненты vue.js и шаблоны блейдов laravel, что звучит для меня как двойная работа.

Что вы думаете об этом паттерне? это хорошо? любые идеи, чтобы улучшить это, я должен вместо этого использовать встроенные шаблоны (таким образом, мне не нужно было бы делать соответствующие шаблоны блейдов и компоненты страницы vue.js.

1 Ответ

0 голосов
/ 14 сентября 2018

использовать шаблон спа.

в спа только один раз, когда ваш файл index.blade.php загрузится, затем загрузите .vue файл

так как пример: это ваш файл index.blade.php

@extends('layouts.master')
@section('content')
<body id="vue_root">
    <vue-router></vue-router>
</body>
@endsection

это ваш файл hotel.vue, где

   list,add,edit,delete functionality 

это ваш файл room.vue, где

  book room,check room available ,etc. functionality.

Теперь, если вы нажмете на ссылку отеля, просто загрузите файл hotel.vue с его функциональностью и отправить запрос ajax на сервер (hotelcontroller) и получить список отелей с ответом в формате json .. (не перезагружать весь, просто перезагружать элемент)

если щелкнуть ссылку на комнату, загрузите только файл room.vue с его функциональность и зависимость от комнаты загрузки .. (не перезагрузить весь, просто перезагрузить элемент) * * 1 023

используя vue-router в vue, вы можете сделать это ......

для получения более подробной информации смотрите эту ссылку , а также эту ссылку

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...