组件的嵌套
组件的嵌套也是开发中比较常见的方式
一个大组件里面有多个小组件,大组件一般称为父组件,小组件称为子组件
1 编写案例
首先定义一个school组件
提出新的需求:现在我想在school里面定义一个子组件(student)出现
首先创建student组件,如果我们把student和school组件一样定义在vm中,就平级了,体现不出来层级的感觉
可以看到,两个组件都是被vm包裹的
这时候就不能这么注册了,应该把子组件注册到父组件中
有点像套娃,如下图所示
但是这样有一个先后定义顺序问题,应该先定义子组件再定义父组件,不然就报错
所以应该把子组件放到前面,只有它准备就绪了,父组件才能使用
查看页面,通过开发者工具可以明确的看到层级关系
到了这里,就完成了基本的组件嵌套
2 补充
一般的开发中,都会定义一个叫app的组件(application的简称),它就是所有组件的父组件,它由vm直接管理
代码如下
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>初始vue</title>
<!-- 引入vue.js -->
<script type="text/javascript" src="../js/vue.js"></script>
</head>
<body>
<div id="root">
<app></app>
</div>
</body>
<script type="text/javascript">
// 定义student组件
const student={
template:`
<div>
<h2>学生姓名:{{studentName}}</h2>
<h2>学生年龄:{{age}}</h2>
</div>
`,
data(){
return{
studentName:'张三',
age:'18'
}
},
}
// 定义school组件
const school={
template:`
<div>
<h2>学校名称:{{schoolName}}</h2>
<h2>学校地址:{{address}}</h2>
<student></student>
</div>
`,
data(){
return{
schoolName:'清华大学',
address:'北京'
}
},
// 注册子组件(局部)
components:{
student
}
}
// 定义hello组件
const hello=Vue.extend({
template:`<h1>{{info}}</h1>`,
data(){
return {
info:'你好!'
}
}
})
// 定义app组件它是全部组件的父组件,由vm直接管理
const app=Vue.extend({
template:
`<div>
<hello></hello>
<school></school>
</div>`
,
components:{
school,
hello
}
})
// 创建vm
const vm= new Vue({
el:'#root',
// 注册组件(局部)
components:{
app
}
})
</script>
</html>
3 总结
在vue开发中,组件的嵌套也是会被经常使用到的,所以也应该掌握。