Vue2.0组件注册

//全局注册:

Vue.component("my-component",{
template:'<div>A custom component!</div>'
});

/*交换位置会报错----创建组件必须在根实例化之前*/

//创建根实例:

 new Vue({
 el:"#app"
 })

 ---------

//局部注册:

new Vue({
el: "#app1",
components: {
// <my-zujian> 将只在父组件模板中可用
'my-zujian': {
template: '<div>我是局部组件</div>'
}
}
});

//html:

<html lang="en">
<head>
    <meta charset="UTF-8" />
    <title>vue2.0组件:</title>
    <script src="./vue.js"></script>
</head>
<body>
    <div>全局组件也必须应用在实例上,不然不显示;</div>
    <hr>
    <div id="app">
        <my-component></my-component>

    </div>

    <div id="app1">
        <my-zujian></my-zujian>
        <my-component></my-component>
    </div>
</body>
</html>

总结: 全局注册的什么地方都可以使用(当然也要是vue管辖范围内);   局部注册的只在挂载当前的元素下可以使用:

以上为Vue简化的语法语法糖注册;

再看一下:

vue组件的注册明确步骤:有助于理解 Vue.extend()和Vue.component()全局API;  

1.其中:Vue.extend()不管是注册全局还是局部都会要用到:

2.Vue.component()用于注册全局组件:

<html>
<meta charset="UTF-8" />
    <body>
        <div id="app">
            <!-- 3. my-component只能在#app下使用-->
            <h4>局部注册方式</h4>
            <my-component></my-component>
        </div>

         <div id="app1">
            <!-- 3. my-comp-->
            <h4>全局注册</h4>
            <my-comp></my-comp>
        </div>

        <div id="app2">
            <!-- 3. my-comp-->
            <h4>全局注册</h4>
            <my-comp></my-comp>
        </div>



    </body>
    <script src="vue.js"></script>
    <script>
        //局部: 1.创建一个组件构造器
        var myComponent = Vue.extend({
            template: '<div>This is my first component! {{name}}</div>',
            data(){
                return {
                    name:"liuliuiu"
                }
            }//es6语法;
        });

        new Vue({
            el: '#app',
            components: {
                // 2. 将myComponent组件注册到Vue实例下
                'my-component' : myComponent
            }
        });


        //全局:1.创建一个组件构造器
        var myComponent = Vue.extend({
            template: '<div>This is a component!</div>'
        })

        Vue.component('my-comp', myComponent)

        var app1 = new Vue({
            el: '#app1'
        });

        var app2 = new Vue({
            el: '#app2'
        });




    </script>
</html>

 问题:

个人理解,全局的组件在任何被Vue挂载的元素下都可以使用:

但是文中的第二种方式,当全局组件和局部组件放在同一个Vue挂载元素下的时候会出现警告:(不过内容是渲染出来了);

而第一种注册方式则不会出现警告 Vue版本为2.5.1

原文地址:https://www.cnblogs.com/liuliu-hai/p/7804549.html