使用 laravel 在 Vue JS 中调用动态组件
Calling dynamic components in Vue JS with laravel
我正在尝试在 Laravel 5.4
和 Vue 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
试试看,让我知道,这就是我过去解决类似问题的方法。干杯!
我正在尝试在 Laravel 5.4
和 Vue 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
试试看,让我知道,这就是我过去解决类似问题的方法。干杯!