zoukankan      html  css  js  c++  java
  • vue----全局组件,局部组件

    1.组件:
    页面的每一个模块都是一个组件
    分为:
      局部组件 全局组件
    2.全局组件
    Vue.component(参数1,参数2)
     
    参数1:组件名称---做标签进行使用的(组件名称大写,不允许与html标签名字相同)
    参数2:组件的配置项
    --->对象(可抽出单独写) 这个对象会有一些属性,这些属性只要vue里面有的属性那么这里面都会有
           (template,data,methods.computed,watch,生命周期函数等),简单的来说这个组件其实就是小型vue实例     template:里面写的是html结构(其实是虚拟DOM)     data:是一个函数 必须返回一个对象
    3.局部组件
    局部组件在vue的内部进行实现
    new Vue({
        el:"#app",
        components:{
            key:val
        }
     
        key:组件名称
        val:组件的配置项
    })
    4.为什么组件内部data是一个函数?
    组件可以复用,
    如果是对象的情况下,在组件复用时可能会导致data中的数据出现覆盖或者调用出错。
    因此是一个函数,这样的情况下,每次使用组件,都会调用函数,每次函数执行完毕后会返回一个新的对象 而不是公用的一个对象
    5.组件和vue实例的区别
    1、组件内部多了一个属性叫做template
     
    2、组件内部的data不在是一个对象了 而是一个函数 需要返回一个对象
    全局组件案例:
    <body>
        <div id="app">
            <!-- 使用中间件 -->
            <banner-con></banner-con>
        </div>
     
        <div id="app2">
            <banner-con></banner-con>
        </div>
    </body>
    </html>
    <script src="vue.js"></script>
    <script>
    //配置项
        const banner = {
        //模板
            template:`<div>
                    <img v-for="(item,index) in imgs" :src="item" />
                </div>`,
    //注意data是一个函数,必须return一个对象
    //数据
            data(){
                return {
                    imgs:[
                       "https://pic.maizuo.com/usr/movie/9f80ee6f3351c49dcf9de57dfbc8cdfe.jpg",
                       "https://pic.maizuo.com/usr/movie/5a406a685eb7906b793181328d571ad7.jpg",
                       "https://pic.maizuo.com/usr/movie/9a843566ffc11c80e1747e7af8a5e48a.jpg"
                   ]
                }
            },
            methods:{
     
            },
            created(){
                console.log(this);
            }
        }
      
    Vue.component("banner-con",banner)
     
        var vm = new Vue({
            el:"#app"
        })
     
        var vm2 = new Vue({
            el:"#app2"
        })
    </script>
     局部组件案例
    <body>
        <div id="app">
            <!-- 使用中间件 -->
            <banner-con></banner-con>
        </div>
    </body>
    </html>
    <script src="vue.js"></script>
    <script>
    //配置项
        const banner = {
            //模板
            template:`<div>
                    <img v-for="(item,index) in imgs" :src="item" />
                </div>`,
            //模板字符串
            data(){
                return {
                    imgs:[
                       "https://pic.maizuo.com/usr/movie/9f80ee6f3351c49dcf9de57dfbc8cdfe.jpg",
                       "https://pic.maizuo.com/usr/movie/5a406a685eb7906b793181328d571ad7.jpg",
                       "https://pic.maizuo.com/usr/movie/9a843566ffc11c80e1747e7af8a5e48a.jpg"
                   ]
                }
            },
            methods:{
     
            }
           
        }
      
        var vm = new Vue({
            el:"#app",
            //局部组件,数据,方法等都是在配置项中写
            components:{
                //key:组件的名称,value组件的配置项,可单独写
                "banner-con":banner
            }
        })
    </script>
     
     
     
     
     
     
  • 相关阅读:
    SpringBoot报错:java.lang.NoSuchMethodError: javax.servlet.ServletContext.getVirtualServerName()Ljava/lang/String;
    SOAP报文转成JAVA对象
    Tomcat他山之石.可以攻玉(一)Server组件
    Tomcat:At least one JAR was scanned for TLDs yet contained no TLDs
    Tomcat8源码笔记(八)明白Tomcat怎么部署webapps下项目
    setsebool命令详解与SELinux管理
    Nginx访问限制模块limit_conn_zone 和limit_req_zone配置使用
    CentOS7防止CC攻击防止SSH爆破采取的措施
    Linux常用命令总结
    Linux下rsync命令使用总结
  • 原文地址:https://www.cnblogs.com/SRH151219/p/10390369.html
Copyright © 2011-2022 走看看