使用 laravel 在 Vue JS 中调用动态组件

Calling dynamic components in Vue JS with laravel

我正在尝试在 Laravel 5.4Vue JS 2.0 上构建应用程序 我有一组 components 仅在特定页面中使用,现在我' m 全局定义组件并使用 blade 文件中的 components 标签,正如我所说的,很多组件是没有用的,所以我的混合文件越来越大,我认为这可能会减慢我的页面渲染速度。我正在寻找一种可以在 blade 文件中动态调用组件的解决方案。以下是我的 app.js 文件:

Vue.component('NavBar', require('./components/NavBar.vue'));
Vue.component('HomeBanner', require('./components/HomeBanner.vue'));
Vue.component('PageFooter', require('./components/Footer.vue'));
Vue.component('Categories', require('./components/Categories.vue'));
Vue.component('SubCategory', require('./components/SubCategory.vue'));

const app = new Vue({
    el: '#app'
});

我有一个 master blade 文件,其中包含以下 HTML 代码:

<div id="app">
    <nav-bar></nav-bar>
    @yield('content')
    <div class="clearfix"></div>
    <page-footer></page-footer>
</div>

<!-- Core Scripts for Vue Components -->
<script src="{{ asset('js/app.js') }}"></script>

并假设在 index.blade.php

@extends('layouts.master')

@section('title', 'HomePage')

@section('content')
    <home-banner></home-banner>
@endsection

categories 页面中我有:

@extends('layouts.master')

@section('title', 'Select your category')

@section('content')
    <categories></categories>
@endsection

关于如何实现这一点的任何建议。

试试这个:

创建一个新文件,例如 partial.js,与您的 app.js 处于同一级别:

window.Vue = require('vue');
Vue.component('categories', require('./components/Categories.vue'));
new Vue({
    el: '#testing'
});

将 partial.js 添加到 gulpfile.js 中的 elixir webpack。应如下所示:

elixir(mix => {
    mix.sass('app.scss')
       .webpack('app.js')
       .webpack('partial.js');
});

然后在 blade 文件中,您希望将 'category' 标签包含在 ID='testing'

的 div 之间

之后,像这样导入 partials.js 脚本:

<script src="/js/partials.js"></script>

我认为这里的导入必须在使用类别组件之后完成。

您的类别页面应该像这样结束:

@extends('layouts.master')

@section('title', 'Select your category')

@section('content')
    <div id='testing'>
        <categories></categories>
    </div>
    <script src="/js/partials.js"></script>
@endsection

试试看,让我知道,这就是我过去解决类似问题的方法。干杯!