组件 Vue.component

<!-- <!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>组件  全局注册</title>
</head>
<body>
    <div id="box">
        <my-component></my-component>
    </div>
</body>
<script type="text/javascript" src="js/Vue.js"></script>
<script type="text/javascript">
    Vue.component('my-component',{
        template:'<div>这是我写的第一个组件!</div>'
    })
    new Vue({
        el:'#box',
        data:{

        }
    })

    // 这样就在全局注册了一个组件,'my-component'是组件的名字,后面的{}里可以写参数,我们看到这里写了一个template,它是组件将会渲染的html内容;把组件名称当做一个标签来写即可。,Vue组件注册要写在前面,Vue实例初始化要写在后面,
    
</script>
</html> -->

<!-- 
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>组件-局部注册</title>
</head>
<body>
    <div id="box">
        <my-component></my-component>
    </div>
    
</body>
<script type="text/javascript" src="js/Vue.js"></script>
<script type="text/javascript">
    var Child={
        template:'<div>这是我写的第一个组件</div>'
    }
    var vm=new Vue({
        el:"#box",
        components:{
            'my-component':Child
        }
    })


    // 这边变量Child其实就是一个参数的对象,我们看到这里把'my-component'注册到了vm对象里面,那么<my-component>只能是在vm的作用域,也就是'#box'下起作用。
</script>
</html> -->


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>data例子  组件</title>
</head>
<body>
    <div id="box">
          <simple-counter></simple-counter>
          <simple-counter></simple-counter>
          <simple-counter></simple-counter>
    </div>
</body>
<script type="text/javascript" src="js/Vue.js"></script>
<script type="text/javascript">
        
        Vue.component('simple-counter', {
              template: '<button v-on:click="counter += 1">{{ counter }}</button>',
              data: function () {   //data 后面一定要跟一个回调函数,date的属性一定要return回来
                return{
                    counter:0
                }
              }
        })

    new Vue({
        el:'#box',
    })



</script>
</html>





二次视频学习:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>props  component组件-02</title>
    <script type="text/javascript" src="js/vue.js"></script>
</head>
<body>
    <div id="app">
        <cai></cai>
        <caicai here="jinzhou"></caicai>  <!--第一种方式  -->
        <caicai :here="message"></caicai>  <!--第二种方式:通过  v-bind方法  :here 是简写-->
    </div>
    
</body>
<script type="text/javascript">
    Vue.component('cai',{  //  全局组件   cai是组件名
        template:`<div style="color:red; font-weight:bold; font-size:20px;">我是全局cai组件</div>`  //   模版
    })
    new Vue({
        el:"#app",
        data:{
            message:"Liaoning",
        },
        components:{  //局部组件定义   只能用在 id为app的元素范围内
            "caicai":{  //   组件名
                template:`<div style= 'color:green; font-weight:bold;'>我来自{{here}}</div>`,
                //模版
                props:['here']  //    支撑,支持,维持; 使倚靠在某物上;


            }
        }
    })
    

    //组件定义两种方法,第一种:注意全局在构造器外面定义   第二种:局部在构造器里面定义
    //  vue不支持  带 -  命名方式    可以小城驼峰形式(第二个单词首字母大写)  大驼峰 (从第一个单词开始,每个单词首字母都大写)
</script>
</html>


 
原文地址:https://www.cnblogs.com/jinsuo/p/7644637.html