以下问题的详细解答,参照下面链接:
| 内容 | 参考链接 |
|---|---|
| Vue基本使用 | Vue的基本使用(一文掌握Vue最基础的知识点) |
| Vue通信和高级特性 | Vue组件间的通信及高级特性(多种组件间的通信、自定义v-model、nextTick、插槽) |
| Vue高级特性 | Vue的高级特性(动态组件、异步加载、keep-alive、mixin、Vuex、Vue-Router) |
| Vue原理1 | Vue原理(理解MVVM模型、深度/监听data变化、监听数组变化、深入了解虚拟DOM) |
| Vue原理2 | Vue原理(diff算法、模板编译、组件渲染和更新、JS实现路由) |
| Vue面试题 | Vue2.x高频面试题 |
| Vue3.x面试考点 | Vue3.x高频面试考点 |
单组件生命周期图(摘自官网)

父子组件生命周期关系

event.$on event.$off event.$emit
.vue 文件被编写出来其实是一个 class 类<User v-bind = "$props">
:value 而没用 v-model<template>
<input
type="text"
:value="text"
@input="$emit('change', $event.target.value)"
/>
</template>
<script>
export default {
model: {
prop: "text", //对应到 props text
event: "change",
},
props: {
text: String,
},
};
</script>
父组件:
<template>
<div>
<ScopedSlot :url="website.url">
<template v-slot="slotProps">
{{ slotProps.slotData.title }}
</template>
</ScopedSlot>
</div>
</template>
子组件:
<template>
<a :href="url">
<slot :slotData="website">
{{ website.subTitle }}
</slot>
</a>
</template>
component: () => import './xxx'
DOM 结构
<div id="div1" class="container">
<p>vdom</p>
<ul style="font-size: 20px">
<li>a</li>
</ul>
</div>
vnode 形式
{
tag: 'div',
props: {
className: 'container',
id: 'div1'
}
children: [
{
tag: 'p',
children: 'vdom'
},
{
tag: 'ul',
props: {style: 'font-size: 20px'}
children: [
{
tag: 'li',
children: 'a'
}
]
}
]
}
不积跬步无以至千里,不积小流无以成江海
点个关注不迷路,持续更新中…