创建组件的方式

注意:不论是哪种方式创建出来的组件,组件的template属性直线的模板内容,必须有且只能有唯一的一个根元素

创建全局组件的三种方式

方式1:使用Vue.extend创建的组件

<div id="app">
<!-- 如果要使用组件,直接:把组件名称,以HTML标签的形式,引入到页面中,即可 -->
 <mycom1></mycom1>
</div>

<script>
//第1步:使用Vue.extend创建的组件,
//得到组件的模板对象
var com1 = Vue.extend({
    template:'<h3>这是使用Vue.extend创建的组件</h3>' //通过template属性,指定了组件要展示的HTML结构
})
//第2步:使用Vue.component('组件的名称',创建出来的组件模板对象),
//把模板对象注册为真正的全局组件
//如果使用Vue.component定义全局组件的时候,组件名称使用了驼峰命名,则在引用组价的时候,需要把大写的驼峰改为小写的字母,同时,两个单子之前,使用 - 链接;
//如果不使用驼峰,则直接拿名称来使用即可;
Vue.component('mycom1',com1)

//另一种更简洁的写法
//Vue.component第一个参数:组件的名称,将来在引用组件的时候,就是一个标签形式来引入它的
//第二个参数:Vue.extend 创建的组件,其中template就是组件将来要展示的HTML内容
Vue.component('mycom1',Vue.extend({
    template:'<h3>这是使用Vue.extend创建的组件</h3>' }))

</script>

方式2:直接使用Vue.component创建出来的组件

<div id="app">
<!-- 还是使用标签形式,引入自己的组件 -->
 <mycom2></mycom2>
</div>

<script>
Vue.component('mycom2',{
    template:'<h3>这是直接使用Vue.component创建出来的组件</h3>' })
</script>

方式3:

<div id="app">
 <mycom3></mycom3>
</div>

<!--在被控制的#app外面,使用template元素,定义组件的HTML模板结构-->
<!--把组件的模板结构抽离出来-->
<template id="templ">
 <div>
     <h1>这是通过template元素,在外部定义的组件结构,这个方式,有代码的智能提示和高亮</h1>
     <h4>这就是组件创建的第三种方式</h4>
 </div>
</template>
<script>
Vue.component('mycom3',{
    template:'#templ' 
})
</script>

定义私有组件

<div id="app">
 <login></login>
</div>

<script>
var vm=new Vue({
    el:'#app',
    data:{},
    methods:{},
    components:{//定义实例内部私有组件的
        login:{
          template:'<h1>这是私有的login组件</h1>'
   }
 }
})
</script>

另一种写法

<div id="app">
 <login></login>
</div>

<template id="tmpl2">
  <h1>这是私有的login组件</h1>
</template>

<script>
var vm=new Vue({
    el:'#app',
    data:{},
    methods:{},
    components:{//定义实例内部私有组件的
        login:{
          template:'#tmpl2'
   }
 }
})
</script>
posted on 2019-11-24 15:25  songsong_p_blue  阅读(153)  评论(0编辑  收藏  举报