Vue.js组件的使用
一.组件
组件是可复用的vue实例,可分为局部组件和全局组件。
二.组件入门小案例
要求定义一个组件”one“,并重复使用它。
2.1.代码实例
1 <html lang="en"> 2 <head> 3 <meta charset="UTF-8"> 4 <title>vue局部组件和全局组件</title> 5 <script src="./js/vue.min.js"></script> 6 </head> 7 <body> 8 <div id="app"> 9 <one></one> 10 <one></one> 11 <one></one> 12 <one></one> 13 </div> 14 </body> 15 </html> 16 <script> 17 //创建vue实例对象 18 var vm = new Vue({ 19 //挂载点 20 el:"#app", 21 //局部组件需要注册 22 components:{ 23 //注册局部组件 24 one:{ 25 //局部组件模板 26 template:"<ul><li>吃饭</li><li>睡觉</li><li>打豆豆</li></ul>" 27 } 28 } 29 }) 30 </script>
2.2.执行效果
三.将组件的模板写在<body>标签内
3.1.实例代码
1 <html lang="en"> 2 <head> 3 <meta charset="UTF-8"> 4 <title>vue局部组件和全局组件</title> 5 <script src="./js/vue.min.js"></script> 6 </head> 7 <body> 8 <div id="app"> 9 <one></one> 10 <comtwo></comtwo> 11 </div> 12 <template id="two"> 13 <div> 14 <p> 15 <ul> 16 <li>吃饭2</li> 17 <li>睡觉2</li> 18 <li>打豆豆2</li> 19 </ul> 20 </p> 21 </div> 22 </template> 23 </body> 24 </html> 25 <script> 26 //创建vue实例对象 27 var vm = new Vue({ 28 //挂载点 29 el:"#app", 30 //局部组件需要注册 31 components:{ 32 //注册局部组件 33 one:{ 34 //局部组件模板 35 template:"<ul><li>吃饭</li><li>睡觉</li><li>打豆豆</li></ul>" 36 }, 37 comtwo:{ 38 template:"#two" 39 } 40 } 41 }) 42 </script>
3.2.效果图
四.局部组件数据的使用
各个局部组件的数据是相互独立的;实现点击某个组件,相应的该组件内容数字+1的功能
4.1.实例代码
1 <html lang="en"> 2 <head> 3 <meta charset="UTF-8"> 4 <title>vue局部组件和全局组件</title> 5 <script src="./js/vue.min.js"></script> 6 <style> 7 *{ 8 margin: 0px; 9 padding: 0px; 10 } 11 .myp{ 12 width: 100px; 13 height: 100px; 14 background-color: greenyellow; 15 float:left; 16 margin-left:12px; 17 } 18 </style> 19 </head> 20 <body> 21 <div id="app"> 22 <one></one> 23 <two></two> 24 <three></three> 25 <three></three> 26 <three></three> 27 </div> 28 <template id="two"> 29 <div> 30 <p> 31 <ul> 32 <li>吃饭2</li> 33 <li>睡觉2</li> 34 <li>打豆豆2</li> 35 </ul> 36 </p> 37 </div> 38 </template> 39 <template id="three"> 40 <p class="myp" @click="add">{{msg}}</p> 41 </template> 42 </body> 43 </html> 44 <script> 45 //创建vue实例对象 46 var vm = new Vue({ 47 //挂载点 48 el:"#app", 49 //局部组件需要注册 50 components:{ 51 //注册局部组件 52 one:{ 53 //局部组件模板 54 template:"<ul><li>吃饭</li><li>睡觉</li><li>打豆豆</li></ul>" 55 }, 56 two:{ 57 template:"#two" 58 }, 59 //局部组件三 60 three:{ 61 template:"#three", 62 //组件数据 63 data(){ 64 return{ 65 msg:1 66 } 67 }, 68 methods:{ 69 add(){ 70 this.msg++; 71 } 72 } 73 } 74 } 75 }) 76 </script>
4.2.效果图
5.全局组件
可以在任何地方使用的组件;全局组件需要通过vue的属性component去创建;
5.1.实例代码
1 <html lang="en"> 2 <head> 3 <meta charset="UTF-8"> 4 <title>vue局部组件和全局组件</title> 5 <script src="./js/vue.min.js"></script> 6 <style> 7 *{ 8 margin: 0px; 9 padding: 0px; 10 } 11 .myp{ 12 width: 100px; 13 height: 100px; 14 background-color: greenyellow; 15 float:left; 16 margin-left:12px; 17 } 18 </style> 19 </head> 20 <body> 21 <div id="app"> 22 <one></one> 23 <two></two> 24 <three></three> 25 <three></three> 26 <three></three> 27 <four></four> 28 </div> 29 <template id="two"> 30 <div> 31 <p> 32 <ul> 33 <li>吃饭2</li> 34 <li>睡觉2</li> 35 <li>打豆豆2</li> 36 </ul> 37 <four></four> 38 </p> 39 </div> 40 </template> 41 <template id="three"> 42 <p class="myp" @click="add">{{msg}}</p> 43 </template> 44 <template id="four"> 45 <p>么么哒~~~</p> 46 </template> 47 </body> 48 </html> 49 <script> 50 //vue的全局组件 51 //全局组件可以在任意地方使用,需要使用vue实例的component属性创建 52 Vue.component("four",{ 53 template:"#four" 54 }); 55 //创建vue实例对象 56 var vm = new Vue({ 57 //挂载点 58 el:"#app", 59 //局部组件需要注册 60 components:{ 61 //注册局部组件 62 one:{ 63 //局部组件模板 64 template:"<ul><li>吃饭</li><li>睡觉</li><li>打豆豆</li></ul>" 65 }, 66 two:{ 67 template:"#two" 68 }, 69 //局部组件三 70 three:{ 71 template:"#three", 72 //组件数据 73 data(){ 74 return{ 75 msg:1 76 } 77 }, 78 methods:{ 79 add(){ 80 this.msg++; 81 } 82 } 83 } 84 } 85 }) 86 </script>
5.2.效果图