• Vue 组件&组件之间的通信 之全局组件与局部组件


    在上篇博客中介绍了组件,在注册组件的简写中就用到了全局组件

    //注册组件的简写方式
                    
                    Vue.component('my-componenta',{
                        
                        
                        template:'<h2>hello vue</h2>'
                    });

    组件可分为全局组件与局部组件;

    全局组件: 在全局API中的Vue.component注册;该项目中所有Vue实例内均可以使用;

    局部组件: 在Vue实例中的components选项中注册; 只能在本实例中使用;

    现在创建两个Vue实例来进行验证全局与局部的区别:

     由图可知全局的可以在定义的所有div中进行调用,但是局部只能在其本身定义好进行调用:

    vue代码;

    <script>
                window.onload= () =>{
                    
                    
                    
                
                    
                    
                    
                    //注册组件的简写方式
                    
                    Vue.component('my-component-a',{
                        
                        
                        template:'<h2>欢迎来到perfect*的博客园!!!</h2>'
                    });
                    
                    
                    
                    new Vue({
                    el:'#one',
                    data:{
                        msg:'123'
                        
                        
                    },
                    components:{
                        "my-component-b":{
                            template:'<h2>欢迎来到perfect*的博客园_01</h2>'
                            
                            
                        }
                    }
                    
                    
            });
            
                new Vue({
                    el:'#two',
                    data:{
                        msg:'123'
                        
                        
                    }
                    
                    
            });
                    
                
                
                
                }
            </script>

    html:

    <div id="one">
                <my-component-a></my-component-a><!--全局的-->
                <my-component-b></my-component-b><!--局部的-->
            
                
                
            </div>
            
            
            <div id="two">
                    <my-component-a></my-component-a><!--全局的-->
                    <my-component-b></my-component-b><!--局部的-->
                
               
                
                
            </div>

    也可以进行如下方式来进行使用:

    全局组件和局部组件都可以存储数据,但是存储的方式与Vue实例中的data稍有不同; 组件里存储数据,data后需加上函数,数据写在函数体中。

    例:以下是在局部组件的data中,定义了name属性;

    <script>
                window.onload= () =>{
                    
                    
                    
                
                    
                    
                    
                    //注册组件的简写方式
                    
                    Vue.component('my-component-a',{
                        
                        
                        template:'<h2>{{name}}</h2>',
                        
                        data:function(){
                            return {
                                name:'欢迎来到perfect*的博客园!!!'
                            }
                        }
                    });
                    
                    
                    
                    new Vue({
                    el:'#one',
                    data:{
                        msg:'123'
                        
                        
                    },
                    components:{
                        "my-component-b":{
                            template:'<h2>{{name}}</h2>',
                            data(){
                                return{
                                    name:'欢迎来到perfect*的博客园_01'
                                }
                            }
                            
                            
                        }
                    }
                    
                    
            });
            
                new Vue({
                    el:'#two',
                    data:{
                        msg:'abc'
                        
                        
                    }
                    
                    
            });
                    
                
                
                
                }
            </script>

    最终代码:

     1 <!DOCTYPE html>
     2 <html>
     3     <head>
     4         <meta charset="UTF-8">
     5         <title>全局组件与局部组件</title>
     6         <script type="text/javascript" src="../js/vue.js" ></script>
     7         
     8         <script>
     9             window.onload= () =>{
    10                 
    11                 
    12                 
    13             
    14                 
    15                 
    16                 
    17                 //注册组件的简写方式
    18                 
    19                 Vue.component('my-component-a',{
    20                     
    21                     
    22                     template:'<h2>{{name}}</h2>',
    23                     
    24                     data:function(){
    25                         return {
    26                             name:'欢迎来到perfect*的博客园!!!'
    27                         }
    28                     }
    29                 });
    30                 
    31                 
    32                 
    33                 new Vue({
    34                 el:'#one',
    35                 data:{
    36                     msg:'123'
    37                     
    38                     
    39                 },
    40                 components:{
    41                     "my-component-b":{
    42                         template:'<h2>{{name}}</h2>',
    43                         data(){
    44                             return{
    45                                 name:'欢迎来到perfect*的博客园_01'
    46                             }
    47                         }
    48                         
    49                         
    50                     }
    51                 }
    52                 
    53                 
    54         });
    55         
    56             new Vue({
    57                 el:'#two',
    58                 data:{
    59                     msg:'abc'
    60                     
    61                     
    62                 }
    63                 
    64                 
    65         });
    66                 
    67             
    68             
    69             
    70             }
    71         </script>
    72     </head>
    73     <body>
    74         <div id="one">
    75             <my-component-a></my-component-a><!--全局的-->
    76             <my-component-b></my-component-b><!--局部的-->
    77         
    78             
    79             
    80         </div>
    81         
    82         
    83         <div id="two">
    84                 <my-component-a></my-component-a><!--全局的-->
    85                 <my-component-b></my-component-b><!--局部的-->
    86             
    87            
    88             
    89             
    90         </div>
    91     </body>
    92 </html>
    全局组件与局部组件
  • 相关阅读:
    订阅发布模式概念基础
    HTML与CSS之display:none
    HTML与CSS之导航栏
    微信小程序-笔记
    基于设计模式的用户管理
    微信小程序-开发组件-笔记1
    JavaScript异常处理
    微信小程序开发-笔记
    封装类实现增删改查
    脚本方式实现数据库增删改查
  • 原文地址:https://www.cnblogs.com/jiguiyan/p/10757170.html
Copyright © 2020-2023  润新知