vue 自定义组件

<!DOCTYPE html>
<html lang="en">
<head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <meta http-equiv="X-UA-Compatible" content="ie=edge">
      <title>Document</title>
      
</head>
<body>
      <!-- 什么是组件? 拥有专属的HTML,CSS,JS和数据的页面独立区域
           为什么?重用
           何时用?只要发现页面中有一个区域可能被反复使用,都要定义成组件

           创建:每个组件都是一个缩微的 new Vue()
           使用组件:组件在html中其实就是一个可重用的标签而已。组件名就是就是标签名。所以组件起名不要驼峰命名!因为HTML标签不区分大小写。可用-分隔多个单词
            new Vue()必须写,因为是new Vue扫描页面时,发现不认识的标签,才会去加载自定义的组件
            加载时:会用组件的template中的HTML模板片段,代替不认识的标签。
            template必须有一个父元素包裹

           Vue.conponent('组件名',{
                 tempalte:``,                模板,放着html片段
                 data(){
                     return {//调用一次data(),返回一个新的return
                           //模型变量
                     }
                 },
                 methods:{},
                 watch:{  },
                 computed:{},
                 created(){},
                 mounted(){},
           })
            new Vue({
               el:"#app"
         })   

      -->

      <!-- 自定义组件 -->
      <div id="app">
            <counter></counter><br>
            <counter></counter><br>
            <counter></counter><br>
      </div>
      <script src="vue2.js"></script>

      <script>
   
       Vue.component('counter',{
            template:`<div>  <button @click=change(-1)>-</button><span>{{n}}</span><button @click=change(+1)>+</button> </div>`,
            data(){
                  return{
                        n:1
                  }
            },
            methods:{
                  change(i){
                        this.n+=i
                  }
            }
      })

      new Vue({
            el:"#app"
       })   
      </script>

</body>
</html>
原文地址:https://www.cnblogs.com/javascript9527/p/11379044.html