• vuejs组件


    一、什么是组件?

        组件 (Component) 是 Vue.js 最强大的功能之一。组件可以扩展 HTML 元素,封装可重用的代码。在较高层面上,组件是自定义元素,Vue.js 的编译器为它添加特殊功能。在有些情况下,组件也可以表现为用 is 特性进行了扩展的原生 HTML 元素。

    总结:
       组件是用来完成特定功能的一个自定义的HTML标签
     例如:
    1. <body>
    2.     <mytag></mytag>
    3. </body>
    注意: mytag就是一个组件, 该组件必须通过Vue为mytag赋予一定的功能

    二、组件的作用

    组件是对特点功能代码(html,css,js)的封装, 通过组件的名字可以重复利用该组件中的代码.

    组件分类:

    全局组件和局部组件
    注意:组件的template模板必须有且只有一个根标签(所有内容必须由一个标签套起来)。
     

    三、全局组件

    1.全局组件的语法:
       Vue.component("自定义标签的名字",{配置对象})
    2. 全局组件的特点:    2.1  全局组件可以在任何被挂着的标签中使用.
       2.2  全局组件的配置对象中必须包含template属
    3. 全局组件应用场景    如果该组件的特定功能需要在任何被Vue实例挂载的标签中使用. 推荐使用全局组件
    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8" />
            <title></title>
        </head>
        <body>
            <div id="app">
                <!--引用全局组件:方式一-->
                <compon1></compon1>
            </div>
            <div id="app2">
                <!--引用全局组件:方式二-->
                <compon2></compon2>
            </div>
            
            <div id="app3">
                <!--引用全局组件:方式三-->
                <compon3></compon3>
            </div>
        <!-- ==============================定义组件模板==================================== -->    
            <!--方式二:定义模板(注意:如果使用script标签,建议加上type="text/template")-->
            <script type="text/template" id="compon2">
                <!--这个div是根标签-->
                <div>
                    <h1>我是网页</h1>
                    <div>
                        天天向阳,自强不息
                    </div>
                </div>
            </script>
            
            <!--方式三:定义模板(建议使用)-->
            <template id="temp">
                <!--这个div是根标签-->
                <div>
                    <h1>我是网页2</h1>
                    <div>
                        上天入地
                    </div>
                </div>
            </template>
            <!--开发版本:vue.js(vue.js代码网址:https://cn.vuejs.org/v2/guide/installation.html)-->
            <script type="text/javascript" src="js/vue.js" ></script>
            <script>
        /* =======================定义全局组件=================================== */
                //定义全局组件(方式一)
                Vue.component("compon1",{
                    template:"<h1> 快过来啊 </h1>"
                })
                //定义全局组件(方式二)
                Vue.component("compon2",{
                    template:"#compon2"
                })
                //定义全局组件(方式三)
                Vue.component("compon3",{
                    template:"#temp"
                })
        /* =======================定义vue实例=================================== */        
                //挂载vue实例(方式一)
                var app= new Vue({
                    el:"#app",
                })
                
                //挂载vue实例(方式二)
                var app2= new Vue({
                    el:"#app2",
                })
                
                //挂载vue实例(方式三)
                var app3= new Vue({
                    el:"#app3",
                })
            </script>
        </body>
    </html>

    四、局部组件-是定义在某个vue实例上的

      1. 局部语法:
         var app = new Vue({
            el: "#app",
            data: {},
            components : {
                "局部组件的名字1" : {组件的配置对象}
                  "局部组件的名字2" : {组件的配置对象}
            }
        });

      2. 局部组件的特点
         局部组件只能够在所挂载的标签中使用.

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8" />
            <title></title>
        </head>
        <body>
            <div id="app">
                <!--引用局部组件:方式一-->
                <compon1></compon1>
                <hr />
                <!--引用局部组件:方式二-->
                <compon2></compon2>
                <hr />
                <!--引用局部组件:方式三-->
                <compon3></compon3>
            </div>
            
        <!-- ==============================定义组件模板==================================== -->    
            <!--方式二:定义模板(注意:如果使用script标签,建议加上type="text/template")-->
            <script type="text/template" id="compon2">
                <!--这个div是根标签-->
                <div>
                    <h1>我是网页</h1>
                    <div>
                        天天向阳,自强不息
                    </div>
                </div>
            </script>
            
            <!--方式三:定义模板(建议使用)-->
            <template id="temp">
                <!--这个div是根标签-->
                <div>
                    <h1>我是网页2</h1>
                    <div>
                        上天入地
                    </div>
                </div>
            </template>
            <!--开发版本:vue.js(vue.js代码网址:https://cn.vuejs.org/v2/guide/installation.html)-->
            <script type="text/javascript" src="js/vue.js" ></script>
            <script>
        
        /* =======================定义vue实例=================================== */        
                //挂载vue实例(方式一)
                var app= new Vue({
                    el:"#app",
                    components:{
                        //定义局部组件(方式一)
                        "compon1":{
                            template:"<h1> 快过来啊 </h1>"
                        },
                        //定义局部组件(方式二)
                        "compon2":{
                            template:"#compon2"
                        },
                        //定义局部组件(方式三)
                        "compon3":{
                            template:"#temp"
                        },
                    }
                })
                
            </script>
        </body>
    </html>

    五、 组件中的数据必须是函数

    1. 组件中数据的定义
       语法:
          "组件的名字":{
                template: "",
                data : function(){
                    return {
                      键1:值1,
                      键2:值2
                    }
                }
           }
    2.注意事项:     1、data数据只能够以函数的形式返回,因为函数中可以写其他的业务代码。     2、只能够在各自的组件模板中使用各自的组件中的data数据。     3、Vue对象中的数据不能够在组件中使用,组件的数据也不能够在挂载的html标签上使用。
    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8" />
            <title></title>
        </head>
        <body>
            <div id="app">
                <!--这里引用的message是vue实例里的data数据-->
                {{message}}
                <!--引用全局组件-->
                <compon1></compon1>
                
            </div>
            
        <!-- ==============================定义组件模板==================================== -->    
            
            <!--定义模板(建议使用)-->
            <template id="temp">
                
                <!--这个div是根标签-->
                <div>
                    <h1>我是网页2</h1>
                    <div>
                        <!--只能够在各自的组件模板中使用各自的组件中的data数据-->
                        上天入地{{message}}
                    </div>
                </div>
            </template>
            <!--开发版本:vue.js(vue.js代码网址:https://cn.vuejs.org/v2/guide/installation.html)-->
            <script type="text/javascript" src="js/vue.js" ></script>
            <script>
        
        /* =======================定义vue实例=================================== */        
                //挂载vue实例(方式一)
                var app= new Vue({
                    el:"#app",
                    data:{
                        message:"哈哈哈哈啊哈!"
                    },
                    components:{
                        //定义局部组件(方式一)
                        "compon1":{
                            template:"#temp",
                            data:function(){
                                return {
                                    message:"武二郎先生"
                                }
                            }
                        }
                        
                    }
                })
                
            </script>
        </body>
    </html>

     

     

  • 相关阅读:
    Nginx平滑升级
    svn部署-linux
    svn服务备份与还原
    vmware exsi安装部署
    redis主从复制读写分离
    redis配置文件详解
    zabbix与agent端通信加密
    部署owa预览服务
    zabbix-3.4邮件报警
    centos7--zabbix3.4微信报警
  • 原文地址:https://www.cnblogs.com/wanghj-15/p/11169582.html
Copyright © 2020-2023  润新知