vue2.0 全局组件和局部组件

本文介绍了Vue2.0中全局组件和局部组件的创建及使用方式。全局组件定义在Vue实例外部,可在应用的任何地方使用;局部组件则定义在Vue实例内部,仅限于该实例及其子组件。组件通过extend方法创建,2.0之后推荐直接使用选项对象创建,以减少extend的使用。同时展示了如何进行动态组件的切换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

全局组件主要是component放外面,全局使用。局部组件主要是放Vue实例对象里,只能这个Vue元素内使用。

组件通过extend创建。

注意:exntend组件内的data是方法、方法、方法

 

全局创建组件全局调用:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <div id="demo">
        <aaa></aaa>
    </div>

    <script src="//cdn.bootcss.com/vue/2.1.10/vue.js"></script>
    <script>
        // 创建组件
        var A=Vue.extend({
            template:"<h3 @click='change'>{{msg}}</h3>",
            data:function(){
                return {
                    msg:"i am btn"
                }
            },
            methods:{
                change:function(){
                    this.msg="i am not a btn"
                }
            }
        })

        // 全局调用组件
        Vue.component('aaa',A);
        
        new Vue({
            el:"#demo"
        })
    </script>
</body>
</html>

或省略extend:

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>

    </style>
</head>
<body>
    <div id="demo">
        <aaa></aaa>
    </div>

    <script src="//cdn.bootcss.com/vue/2.1.10/vue.js"></script>
    <script>
        // 全局组件
        Vue.component('aaa',{
            template:"<h3 @click='change'>{{msg}}</h3>",
            data:function(){
                return {
                    msg:"i am btn"
                }
            },
            methods:{
                change:function(){
                    this.msg="i am not a btn"
                }
            }
        });
        
        new Vue({
            el:"#demo"
        })
    </script>
</body>
</html>

 

全局创建组件局部调用:

 

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <div id="demo">
        <aaa></aaa>
    </div>
<script src="//cdn.bootcss.com/vue/2.1.10/vue.js"></script>
    <script>
        // 创建组件
        var A=Vue.extend({
            template:"<h3 @click='change'>{{msg}}</h3>",
            data:function(){
                return {
                    msg:"i am btn"
                }
            },
            methods:{
                change:function(){
                    this.msg="i am not a btn"
                }
            }
        })

        new Vue({
            el:"#demo",
            components:{
                // 局部调用组件
                aaa:A
            }
        })
    </script>
</body>
</html>

或省略extend:

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>

    </style>
</head>
<body>
    <div id="demo">
        <aaa></aaa>
    </div>

    <script src="//cdn.bootcss.com/vue/2.1.10/vue.js"></script>
    <script>
        new Vue({
            el:"#demo",
            components:{
                // 局部组件
                aaa:{
                    template:"<h3 @click='change'>{{msg}}</h3>",
                    data:function(){
                        return {
                            msg:"i am btn"
                        }
                    },
                    methods:{
                        change:function(){
                            this.msg="i am not a btn"
                        }
                    }
                }
            }
        })
    </script>
</body>
</html>

 

 

最后再来个动态组件。。。:

 

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>

    </style>
</head>
<body>
    <div id="demo">
        <button @click="a='aaa'">aaa</button>
        <button @click="a='bbb'">bbb</button>
        <component :is="a">

        </component>
    </div>
    <script src="//cdn.bootcss.com/vue/2.1.10/vue.js"></script>
    <script>
        new Vue({
            el:"#demo",
            data:{
                a:'aaa'
            },
            components:{
                'aaa':{
                    template:"<h3>我是aaa</h3>"
                },
                'bbb':{
                    template:"<h3>我是bbb</h3>"
                }
            }
        })
    </script>
</body>
</html>

 

2.0以后其实使用extend很少了,基本不用!

 

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <template id="aaa"> <div> <h3>abc</h3> <h4>def</h4> <h5>xyz</h5> </div> </template> <div id="box"> <aaa></aaa> {{msg}} </div> <script src="//cdn.bootcss.com/vue/2.2.1/vue.common.js"></script> <script> var Home={ template:'#aaa' } Vue.component('my-aaa',Home); window.onload=function(){ new Vue({ el:"#box", data:{ msg:"welcome vue2.0" }, components:{ 'aaa':Home } }) } </script> </body> </html>


 

 

 

 

 

 

 


 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值