Как улучшить существующий проект Laravel с помощью VueJS? - PullRequest
2 голосов
/ 31 января 2020

Я только что закончил свой проект, используя только фреймворк Laravel. Теперь я хочу добавить vue. js в мой проект, чтобы визуализировать виды без их загрузки. Я просмотрел несколько руководств и обнаружил, что для этого мне нужно преобразовать свои файлы blade-серверов в Vue компоненты. Но, как я знаю, это большой процесс, так как некоторые функции не будут работать в VueJS. И я не знаю, как это сделать. Пожалуйста, кто-нибудь, направьте меня сюда, как это сделать. Заранее спасибо.

Ответы [ 3 ]

3 голосов
/ 31 января 2020
  1. Перестройте свою базовую c структуру в Vue шаблон:
// MyTemplate.vue
<template>
  <div> <!-- keep this single "parent" div in your template -->

    <!-- your Blade layout here -->

  </div>
</template>

<script>
  export default {
    props: [ 'data' ]
  }
</script>
Добавьте ваш шаблон Vue в качестве глобального компонента в приложение. js:
// app.js
import Vue from 'vue';
window.Vue = Vue;

Vue.component('my-template', require('./MyTemplate.vue').default);

const app = new Vue({
  el: '#app'
});
Используйте этот новый шаблон Vue в своем шаблоне Blade, как показано ниже:
<my-template :data="{{ $onePhpVarThatHoldsAllYourData }}></my-template>

Оказавшись внутри шаблона Vue, вы не сможете вернуться к своему Laravel методы (например, @auth) или для дополнительных данных без запроса Ajax, поэтому убедитесь, что все необходимые данные упакованы в шаблон Vue заранее. Все данные, которые вы отправляете, будут иметь префикс внутри шаблона Vue с названием реквизита, которому вы его назначаете, в данном случае data.

Преобразуйте ваши директивы Blade в Vue директивы:

Петли (например, @foreach) в v-for с:

@foreach ($items as $item)
  <li>{{ $item }}</li>
@endforeach

становится

  <li v-for="item in data.items">{{ item }}</li>

Управляющие структуры (например, @if ($something !== $somethingElse) ... @endif) до v-if с:

<div v-if="data.something !== data.somethingElse">
...
</div>
1 голос
/ 31 января 2020

Если вы планируете перенести все приложение, начните с аутентификации.

Часть № 1: https://codebriefly.com/laravel-jwt-authentication-vue-ja-spa-part-1/

Part # 2 https://codebriefly.com/laravel-jwt-authentication-vue-js-spa-part-2/

Этот урок помог мне в прошлом начать работу. После этого разделите ваш код на компоненты.

Если вы хотите сначала изучить основы, тогда вы можете go с этим учебником, я нашел это полезным. https://www.youtube.com/playlist?list=PL4cUxeGkcC9gQcYgjhBoeQH7wiAyZNrYa

Надеюсь, это поможет!

1 голос
/ 31 января 2020

В общем, как уже упоминалось в комментариях, нет короткого пути для преобразования вашего приложения из блейдов в VueJS компоненты. В любом случае, если вы подумаете о переходе на VueJS, я бы порекомендовал вам выполнить полную миграцию вместо частичного использования Vue компонентов.

Основная идея перехода на VueJS - перенести все логи c, что вы сделали в шаблонах blade-серверов (например, foreach, if's et c) для Vue компонентов и извлечения всех данных, используя AJAX запросы (например, с помощью axios или nativelly).

В этом случае ваши контроллеры должны вернуть все данные, необходимые для рендеринга страницы, а Vue компоненты позаботятся об остальном рендеринге логи c.

Кроме того, это хороший вариант для использования vue-router, чтобы обработать округление и заставить ваше приложение вести себя как SPA. В этом случае вы должны создать в своем приложении один шаблонный маршрут, который будет возвращать только один шаблон блейда. Внутри этого шаблона вы должны вставить тег root, который будет инициировать VueJS. Остальные будут на стороне VueJS.

...