});
2.注册组件:`Vue.component('my-cpn', cpnC);`
创建构造器+注册语法糖(更常用):就是把template的内容直接写到cpnC中,省去extend这一步
全局组件:
Vue.component(‘myCpn’, {
template: `
标题
内容
局部组件:
const app = new Vue({
el: ‘#app’,
data: {},
components: {
myCpn: {
template: `
标题
内容
3.使用组件:在Vue实例的作用范围内(id="app"内)使用 `<my-cpn></my-cpn>`
### 2. 全局组件和局部组件
全局组件:可以在多个Vue实例下使用
在Vue外部注册的:`Vue.component('myCpn', cpnC);`
局部组件:只能在特定的Vue实例下使用(用得更多)
在Vue中写在components中:`components: { myCpn: cpnC }`
### 3. 父组件和子组件
app是cpnC2的父级(可看作root),cpnC2是cpnC1的父级,只有注册了,才可以在其实例范围下使用
<script>
const cpnC1 = Vue.extend({
template: `
标题1
内容1
标题2
内容2
### 4. 模板的分离写法

### 5. 组件数据
组件中的html结构要使用数据,使用组件中的data来设置,data是一个函数,返回一个对象
为什么是一个函数?因为当多次使用组件时,data是函数的形式,则会重新调用函数,里面的数据对于每个组件来说是私有的,不是公用的
<!-- html结构分离 -->
<template id="cpn1">
<h2>{{title1}}</h2>
</template>
<template id="cpn2">
<h2>{{title2}}</h2>
</template>
<script src="../vue.js"></script>
<script>
//全局组件
Vue.component('cpn1', {
template: '#cpn1',
data() { //注意data是一个函数 返回一个对象
return {
title1: '全局组件'
}
}
})
const app = new Vue({
el: '#app',
data: {
},
components: {
cpn2: {
template: '#cpn2',
data() { //data是函数 返回一个对象
return {
title2: '局部组件'
}
}
}
}
})
</script>
## 二、父子组件通信
在开发中,往往需要上层组件请求网络数据,再传递给下面的组件进行展示
父子组件间通信:
1.通过props向子组件传递数据
2.通过事件向父组件发送消息

### 1. 父传子
`props`:
<template id="cpn">
<div>
<p>{{cmessage}}</p>
<ul>
<li v-for="item in cmovies">{{item}}</li>
</ul>
</div>
</template>
<script src="../vue.js"></script>
<script>
const app = new Vue({ //相当于父组件
el: '#app',
data: {
message: 'vivian',
movies: ['海贼王', '柯南', '火隐忍者', '蜡笔小新']
},
components: {
cpn: { //子组件
template: '#cpn',
// 属性,里面是属性名
// 写法一:数组形式
// props: ['cmovies', 'cmessage']
//写法二:类型限制
// props: {
// cmovies: Array,
// cmessage: String
// }
//写法三:有默认值
props: {
//类型是对象或者数组时,默认值必须是一个函数
cmovies: {
type: Array,
default() {
return []
}
},
cmessage: {
type: String,
default: 'aaa',
required: true
}
}
}
}
})
</script>

注意:v-bind语法**不支持驼峰命名法**,要转成小写,例如childMyMessage要转成child-my-message才能使用v-bind
### 2. 子传父
子组件中,通过`$emit`来触发事件
父组件中,通过`v-on`来监听事件
### 3. 父访问子
### 总结
秋招即将开始,校招的朋友普遍是缺少项目经历的,所以**底层逻辑,基础知识要掌握好!**
而一般的社招,更是神仙打架。特别强调,项目经历不可忽视;几乎简历上提到的项目都会被刨根问底,所以项目应用的技术要熟练,底层原理必须清楚。
这里给大家提供一份汇集各大厂面试高频核心考点前端学习资料。涵盖 **HTML,CSS,JavaScript,HTTP,TCP协议,浏览器,Vue框架,算法**等高频考点**238道(含答案)**!
资料截图 :



**高级前端工程师必备资料包**
