• Vue组件使用


    一、组件概念

      有html模板,有css样式,有js逻辑的集合体

    每一个组件都是一个vue实例
    每个组件均具有自身的模板template,根组件的模板就是挂载点
    每个组件模板只能拥有一个根标签
    子组件的数据具有作用域,以达到组件的复用

     

    1、根组件

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <title>模板</title>
    </head>
    <body>
    <div id="app">
        <h1>组件概念</h1>
    </div>
    </body>
    <script src="js/vue.js"></script>
    <script>
        // 组件:有html模板,有css样式,有js逻辑的集合体
        // 根组件的模板就使用挂载点,子组件必须自己定义template(局部子组件, 全局子组件)
        new Vue({
            el: '#app',
            template: `
                        <div>
                            <h1 style="color:red;">组件渲染的模板</h1>
                            <h2 @click="action">副标题</h2>
                        </div>
                       `,
            data: {
    
            },
            methods: {
                action: function () {
                    alert(123)
                }
            }
        })
    </script>
    </html>
    View Code

     

    2、局部组件

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <title>模板</title>
    </head>
    <body>
    <div id="app">
        <abc></abc>
        <abc></abc>
    </div>
    </body>
    <script src="js/vue.js"></script>
    <script>
        // 定义局部组件
        let localTag = {
            // data要达到组件的复用,必须为每个组件提供一个名称空间(作用域)
            // data的值就是一个存放数据的字典
            // 需要满足以上两个条件,data值为一个可以产生名称空间的函数的返回值,返回值是字典
            data: function () {
                return {
                    count: 0
                }
            },
            template: `
                    <div class="box" style="border:solid;300px">
                        <h1>局部组件</h1>
                        <p class="p1">文本内容</p>
                        <p @click="action" class="p2" style="background:yellow">被点击了{{ count }}次</p>
                    </div>
                    `,
            methods: {
                action: function () {
                    this.count++
                }
            }
        };
        new Vue({
            el: '#app',
            data: {
    
            },
            // 注册组件
            components: {
                'abc': localTag
            }
        })
    </script>
    </html>
    View Code

     

    3、全局组件

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <title>模板</title>
    </head>
    <body>
    <div id="app">
        <!--在标签中建议使用 - 语法命名,对应js中就是驼峰命名-->
        <old-boy></old-boy>
    </div>
    </body>
    <script src="js/vue.js"></script>
    <script>
        // 创建一个全局组件
        // Vue.component(组件名, {组件主体})
        Vue.component('OldBoy', {
            data: function(){
                return {
                    count: 0
                }
            },
            template: `
                <div class="box" style="border:solid;300px">
                    <h1>全局组件</h1>
                    <p class="p1">文本内容</p>
                    <p @click="action" class="p2" style="background:yellow">被点击了{{ count }}次</p>
                </div>
                `,
            methods: {
                action: function () {
                    this.count++
                }
            }
        });
    
        // 全局组件无需注册
        new Vue({
            el: '#app',
            data: {
    
            }
        })
    </script>
    </html>
    View Code

  • 相关阅读:
    TCP连接异常断开检测(转)
    正排索引与倒排索引(转)
    Elasticsearch之优化
    把网卡中断绑定到CPU,最大化网卡的吞吐量(转)
    十张GIFs让你弄懂递归等概念
    二维数组回形遍历(转)
    如何做Go的性能优化?(转)
    Go的50度灰:Golang新开发者要注意的陷阱和常见错误(转)
    Nginx配置之负载均衡、限流、缓存、黑名单和灰度发布(转)
    从零到卓越:京东客服即时通讯系统的技术架构演进历程(转)
  • 原文地址:https://www.cnblogs.com/zhangguosheng1121/p/11099800.html
Copyright © 2020-2023  润新知