<div id='app'><cpn></Cpn>//3. 使用 组件</div><script>//1. 创建组件构造器const cpnC = Vue.extend({
template: `<div><h2>我是标题</h2><p>哈哈哈</p><p>呵呵呵</p></div>`
})//2. 注册 组件(这里注册是 全局组件)
Vue.component('Cpn', cpnC)
var app = new Vue({
el:'#app',
data:{ message:'give him some color look look'}})</script>
2. 全局组件 和 局部组件
<div id='app'><Cpn1></Cpn1><Cpn2></Cpn2></div><script>//1. 创建组件构造器const cpnC = Vue.extend({
template: `<div><h2>我是标题</h2><p>哈哈哈</p><p>呵呵呵</p></div>`
})//2. 注册 组件(全局组件) 这里注册全局组件所有的实例都能使用
Vue.component('Cpn1', cpnC)
var app = new Vue({
el:'#app',
data:{ message:'give him some color look look'},
components:{//这里注册的组件只能在这个实例上使用,在 #app 这个实例外边不可用
Cpn2: cpnC
}})</script>
3. 父组件 和 子组件
<div id='app'><Cpn2></Cpn2></div><script>//1. 创建第一个组件(子组件)const cpnC1 = Vue.extend({
template: `<div><h2>我是标题</h2><p>哈哈哈</p></div>`
})//2. 创建第二个组件(父组件)const cpnC2 = Vue.extend({
template: `
<div><h2>我是标题</h2><p>呵呵呵</p><Cpn1></Cpn1>//只能在第二个组件内部使用</div>
`,
components:{// 第1个组件在第2个组件内部注册
Cpn1: cpnC1
}})//实例可看做 root根组件
var app = new Vue({
el:'#app',
data:{ message:'give him some color look look'},
components:{ Cpn2: cpnC2 }})</script>
4. 注册组件语法糖
<div id='app'><Cpn1></Cpn1><Cpn2></Cpn2></div><script>//语法糖注册全局组件
Vue.component('Cpn1',{
template: `<div><h2>我是标题</h2><p>哈哈哈</p></div>`
})
var app = new Vue({
el:'#app',
data:{ message:'give him some color look look'},//语法糖注册全局组件
components:{'Cpn2':{
template: `<div><h2>我是标题</h2><p>呵呵呵</p></div>`
}}})</script>
5. 组件模板抽离 2 种方式
<div id='app'><Cpn1></Cpn1><Cpn2></Cpn2></div>//<!-- 1. 通过script标签 ,注意类型:text/x-template --><script type="text/x-template" id="cpnC1"><div><h2>我是标题</h2><p>哈哈哈</p></div></script>//<!-- 2. 通过template标签 --><template id="cpnC2"><div><h2>我是标题</h2><p>哈哈哈</p></div></template><script>//注册全局组件
Vue.component('Cpn1',{//对应script标签id属性值
template:'#cpnC1'})
Vue.component('Cpn2',{//对应template标签id属性值
template:'#cpnC2'})
var app = new Vue({el:'#app',data:{ message:'give him some color look look'}})</script>