1.组件的创建
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="../lib/vue-2.4.0.js"></script>
</head>
<body>
<div id="app">
<mycom3></mycom3>
</div>
<div id="app1">
<login></login>
</div>
</body>
<template id="tmp1">
<div>
<h1>这是通过template元素,在外部定义的组件结构,这个方式,有代码的提示和高亮</h1>
<h4>好用不错</h4>
</div>
</template>
<template id="tmp2">
<h1>这是私有的login组件</h1>
</template>
<script>
//第一种方式定义:全局组件
// var com1=Vue.extend({
// template:'<h3>这是使用vue。extend创建的组件<spand>111</spand></h3>'
// })
// Vue.component("mycom1",com1);
//第二种方式定义组件
// Vue.component("mycom1",Vue.extend({
// template:'<div>这是sss使用vue.extends创建的组件<span>dfdfdf</span></div>',
// }))
//第三种方式定义组件 只允许有一个根节点
// Vue.component("mycom1",{
// template:'<div>这是sss使用vue.extends创建的组件<span>dfdfdf</span></div>',
// })
// 第四种方式(推荐)
//创建全局组件
Vue.component('mycom3',{
template:'#tmp1'
})
var vm=new Vue({
el:'#app',
data:{},
methods:{}
});
var vm2=new Vue({
el:'#app1',
data:{},
methods:{},
components:{
// 私有组件
login:{
template: '#tmp2'
}
}
});
</script>
</html>
2.组件中data和methods的使用
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="../lib/vue-2.4.0.js"></script>
</head>
<body>
<div id="app">
<mycom1></mycom1>
</div>
</body>
<script>
Vue.component("mycom1",Vue.extend({
template:'<h1 @click="show">这是全局组件---{{msg}}}</h1>',
data:function () {
return {
msg:'这是组件中的data定义的数据',
name:'zhangsan'
}
},
methods:{
show:function () {
console.log("aaa")
}
}
}))
var vm=new Vue({
el:'#app',
data:{
msg:'hello'
},
methods:{}
});
</script>
</html>
3.组件的切换
<!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="../lib/vue-2.4.0.js"></script>
</head>
<body>
<div id="app">
<a href="" @click.prevent="comName='login'">登录</a>
<a href="" @click.prevent="comName='register'">注册</a>
<a href="" @click.prevent="comName='index'">首页</a>
<component :is="comName"></component>
</div>
<script>
Vue.component('login', {
template: '<h3>登录组件</h3>'
})
Vue.component('register', {
template: '<h3>注册组件</h3>'
})
Vue.component('index', {
template: '<h3>首页组件</h3>'
})
// 创建 Vue 实例,得到 ViewModel
var vm = new Vue({
el: '#app',
data: {
comName:'login'
},
methods: {}
});
</script>
</body>
</html>