Laravel框架使用Vue2组件

环境

laravel版本:8.83.27
vue版本: 2.7.0

安装laravel

composer create-project laravel/laravel test

安装auth脚手架及Vue2相关依赖

// 依次执行以下命令
composer require laravel/ui
php artisan ui vue --auth
npm install && npm run dev

Tip: 可参考:Laravel框架使用Auth进行用户认证

创建Vue组件

resources/js/components 目录下创建需要的 Vue组件

<template>
    <div class="container">
        <div class="row justify-content-center">
            <div class="col-md-8">
                <div class="card">
                    <div class="card-header">{{ content }}</div>

                    <div class="card-body">
						我是一个测试内容
                    </div>
                </div>
            </div>
        </div>
    </div>
</template>

<script>
    export default {
        data() {
           return {
               content : '',
           }
        },
        mounted() {

        }
    }
</script>

注册Vue组件

resources/js/app.js 文件中注册刚才生成的 Vue组件,并创建实例。例如:

// 注册组件
Vue.component('example-component', require('./components/ExampleComponent.vue').default);

// 创建实例
const app = new Vue({
    el: '#app',
});

调用Vue组件

然后我们在需要的 blade模板文件 里面就能直接调用这个 Vue组件 了,以绑定的路由为一套闭合标签。例如:

<example-component></example-component>

传参

blade模板文件 传递数据为数组的时候,需要先转化成 json字符串

<example-component msg="{{ $msg }}" article_list={{ json_encode($item) }}></example-component>

Vue组件 页面 props 属性来接受这些参数。

<template>
    <div class="container">
        <div class="row justify-content-center">
            <div class="col-md-8">
                <div class="card">
                    <div class="card-header">{{ content }}</div>

                    <div class="card-body">
                        <ul>
                            <li v-for="(item, index) in articles" :key="index">
                                {{ index }}-{{ item }}
                            </li>
                        </ul>
                    </div>
                </div>
            </div>
        </div>
    </div>
</template>

<script>
    export default {
        props : [
            'msg',
            'article_list',
        ],
        data() {
           return {
               content : '',
               articles : [],
           }
        },
        mounted() {
            this.content = this.msg;
			// 把json字符串转化成数组
            this.articles = JSON.parse(this.article_list);
        }
    }
</script>

Tip: 传参的参数不要使用小驼峰写法,要使用下划线命名法!!!

注意

组件页面修改了任何东西 都需要在项目的根目录执行 npm run dev 命令重新刷新组件内容。

混编可参考:PHP - Laravel 视图模板(blade.php) @ 原始形态输出(Vue 与 PHP 混编)

参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值