zoukankan      html  css  js  c++  java
  • vue组件创建学习总结

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <meta name="viewport" content="width=device-width, initial-scale=1.0">
     6     <meta http-equiv="X-UA-Compatible" content="ie=edge">
     7     <title>Document</title>
     8 </head>
     9 <script src="vue.js"></script>
    10 <body>
    11     <div id="app">
    12         <!-- 如果要使用组件,直接把组件的名称,以HTML标签的形式,引用到页面中去,即可 -->
    13         <!-- 注意使用规则   -->
    14         <!-- // 注意:如果使用vue.componentd定义全局组件的时候,组件使用了驼峰命名,则在引用的时候,需要把大写的驼峰改为小写字母同时,
    15         // 在两个单词之间用-链接;如果不使用驼峰,则直接拿名称来使用即可 -->
    16         <my-com1></my-com1>
    17         <!-- <myCom1></myCom1> -->
    18     </div>
    19     <script>
    20         // 1.使用vue.extend来创建全局组件
    21    var com1= Vue.extend({
    22         template:'<div><h1>这是直接用Vue.componet创建出来的组件</h1><span>123</span></div>'
    23     //   通过temolate属性;指定了组件要展示的html结构
    24     })
    25     // 返回一个模板对象
    26     // 1.2使用vue.componnet('组件名称',创建出来的组件模板对象);然后注册一个组件
    27     Vue.component('myCom1',com1)
    28     // 注意:如果使用vue.componentd定义全局组件的时候,组件使用了驼峰命名,则在引用的时候,需要把大写的驼峰改为小写字母同时,
    29     // 在两个单词之间用-链接;如果不使用驼峰,则直接拿名称来使用即可
    30     var vm=new Vue({
    31         el:'#app',
    32             data:{
    33                 msg:'父组件中的数据123'
    34             },
    35     })
    36     </script>
    37 </body>
    38 </html>

    简写方式

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <meta name="viewport" content="width=device-width, initial-scale=1.0">
     6     <meta http-equiv="X-UA-Compatible" content="ie=edge">
     7     <title>Document</title>
     8 </head>
     9 <script src="vue.js"></script>
    10 <body>
    11     <div id="app">
    12         <!-- 如果要使用组件,直接把组件的名称,以HTML标签的形式,引用到页面中去,即可 -->
    13         <!-- 注意使用规则   -->
    14         <!-- // 注意:如果使用vue.componentd定义全局组件的时候,组件使用了驼峰命名,则在引用的时候,需要把大写的驼峰改为小写字母同时,
    15         // 在两个单词之间用-链接;如果不使用驼峰,则直接拿名称来使用即可 -->
    16         <my-com1></my-com1>
    17         <!-- <myCom1></myCom1> -->
    18     </div>
    19     <script>
    20         // 1.使用vue.extend来创建全局组件
    21 //    var com1= Vue.extend({
    22 //         template:'<div><h1>这是直接用Vue.componet创建出来的组件</h1><span>123</span></div>'
    23 //     //   通过temolate属性;指定了组件要展示的html结构
    24 //     })
    25 //     // 返回一个模板对象
    26 //     // 1.2使用vue.componnet('组件名称',创建出来的组件模板对象);然后注册一个组件
    27 //     Vue.component('myCom1',com1)
    28 // 上面的写法可以简化为
    29     Vue.component('myCom1',Vue.extend({
    30         template:'<div><h1>这是直接用Vue.componet创建出来的组件</h1><span>123</span></div>'
    31     //   通过temolate属性;指定了组件要展示的html结构
    32     }))
    33     // 注意:Vue.component第一个参数:组件的名称,将来在引用组件的时候,就是一个标签形式来引入它的
    34     // 第二个参数是:Vue.extend创建的组件,其中tempalte就是组件将来要展示的html内容
    35     var vm=new Vue({
    36         el:'#app',
    37             data:{
    38                 msg:'父组件中的数据123'
    39             },
    40     })
    41     </script>
    42 </body>
    43 </html>
    View Code

    组件的创建方式第二种方式

     vue.component

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <meta name="viewport" content="width=device-width, initial-scale=1.0">
     6     <meta http-equiv="X-UA-Compatible" content="ie=edge">
     7     <title>Document</title>
     8     <script src="vue.js"> </script>
     9 </head>
    10 <body>
    11     <div id="app">
    12         <!-- 还是使用标签的形式引用自己的组件 -->
    13         <mycom2></mycom2>
    14     </div>
    15 <script>
    16     Vue.component('mycom2',{
    17         template:'<div><h1>这是直接用Vue.componet创建出来的组件</h1><span>123</span></div>'
    18         // 注意:无论是哪种方式创建的组件,组件的tempalte属性指向的模板内容,必须有且只能有唯一的一个根元素
    19     })
    20     var vm=new Vue({
    21         el:'#app'
    22     })
    23 
    24 </script>
    25 </body>
    26 </html>

    组件的创建方式第三种方式:把模板抽离出去的方式

    <!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>
        <script src="vue.js"> </script>
    </head>
    <body>
        <div id="app">
            <mycom3></mycom3>
        </div>
        <!-- 注意:在被控制的#app外面,使用template元素,定义组件的html模板结构 -->
        <template id="temp1">
            <div>
                <h1>这是通过tempale元素,在外部定义的组件结构,这个方式,有代码的只能提示和高亮</h1>
                <span>好用,不错</span>
            </div>
        </template>
    <script>
        Vue.component('mycom3',{
            template:'#temp1'
        })
        var vm=new Vue({
            el:'#app'
        })
    
    </script>
    </body>
    </html>

     注意:以上是全局组件的创建方式

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <meta name="viewport" content="width=device-width, initial-scale=1.0">
     6     <meta http-equiv="X-UA-Compatible" content="ie=edge">
     7     <title>Document</title>
     8     <script src="vue.js"> </script>
     9 </head>
    10 <body>
    11     <div id="app">
    12         <mycom3></mycom3>
    13     </div>
    14     <div id="app2">
    15         <mycom3></mycom3>
    16     </div>
    17     <!-- 注意:在被控制的#app外面,使用template元素,定义组件的html模板结构 -->
    18     <template id="temp1">
    19         <div>
    20             <h1>这是通过tempale元素,在外部定义的组件结构,这个方式,有代码的只能提示和高亮</h1>
    21             <span>好用,不错</span>
    22         </div>
    23     </template>
    24 <script>
    25     Vue.component('mycom3',{
    26         template:'#temp1'
    27     })
    28     var vm=new Vue({
    29         el:'#app'
    30     })
    31     var vm2=new Vue({
    32         el:'#app2'
    33     })
    34 
    35 </script>
    36 </body>
    37 </html>

    下面来看下怎么定义局部组件

    使用components定义私有组件

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <meta name="viewport" content="width=device-width, initial-scale=1.0">
     6     <meta http-equiv="X-UA-Compatible" content="ie=edge">
     7     <title>Document</title>
     8     <script src="vue.js"> </script>
     9 </head>
    10 <body>
    11     <div id="app">
    12         <mycom2></mycom2>
    13         <!-- <login></login> -->
    14         <!-- 注释这里会报错,因为他是vm2实例的私有组件 -->
    15     </div>
    16     <div id="app2">
    17             <mycom2></mycom2>
    18             <login></login>
    19         </div>
    23 <script>
    24 //   全局组件
    25     Vue.component('mycom2',{
    26         template:'<div><h1>这是直接用Vue.componet创建出来的全局组件</h1><span>123</span></div>'
    27         // 注意:无论是哪种方式创建的组件,组件的tempalte属性指向的模板内容,必须有且只能有唯一的一个根元素
    28     })
    29     
    30     var vm=new Vue({
    31         el:'#app'
    32     });
    33     var vm2 =new Vue({
    34         el:'#app2',
    35         components:{
    36             // 定义实例内部的私有组件
    37             login:{
    38                 // template:'#temp2'
    39                 template:'<h1>这是私有的login组件</h1>'  
    40             }
    41         }
    42     })
    43 </script>
    44 </body>
    45 </html>

    可以把私有组件的模板分离出去  改写成这样

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <meta name="viewport" content="width=device-width, initial-scale=1.0">
     6     <meta http-equiv="X-UA-Compatible" content="ie=edge">
     7     <title>Document</title>
     8     <script src="vue.js"> </script>
     9 </head>
    10 <body>
    11     <div id="app">
    12         <mycom2></mycom2>
    13         <!-- <login></login> -->
    14         <!-- 注释这里会报错,因为他是vm2实例的私有组件 -->
    15     </div>
    16     <div id="app2">
    17             <mycom2></mycom2>
    18             <login></login>
    19         </div>
    20     <template id="temp2">
    21         <h1>这是私有的login组件</h1>
    22     </template>
    23 <script>
    24 //   全局组件
    25     Vue.component('mycom2',{
    26         template:'<div><h1>这是直接用Vue.componet创建出来的全局组件</h1><span>123</span></div>'
    27         // 注意:无论是哪种方式创建的组件,组件的tempalte属性指向的模板内容,必须有且只能有唯一的一个根元素
    28     }) 
    29  
    30     var vm=new Vue({
    31         el:'#app'
    32     });
    33     var vm2 =new Vue({
    34         el:'#app2',
    35         components:{
    36             // 定义实例内部的私有组件
    37             login:{
    38                 template:'#temp2'
    39                 // template:'<h1>这是私有的login组件</h1>'  
    40             }
    41         }
    42     })
    43 </script>
    44 </body>
    45 </html>
  • 相关阅读:
    JDK5的新特性
    反射(一)类加载器、反射、动态代理
    泛型(五)
    spring自定义注解实现登陆拦截器
    java国际化
    Codeforces 231A
    Codeforces 231A
    CCF CSP 201909-2 小明种苹果(续)
    CCF CSP 201909-2 小明种苹果(续)
    CCF CSP 201909-1 小明种苹果
  • 原文地址:https://www.cnblogs.com/wanqingcui/p/10755694.html
Copyright © 2011-2022 走看看