自定义v-model
下面的 **input**使用**:value**而不是**v-model**
下面的**change1**和**model.event**对应
下面的**text1**属性对应
// parent<p>{{ name }}</p><customModel v-model="name" />// child<input type="text" :value="text1" @input="$emit('change1', $event.target.value)" /><script>export default {model: {prop: 'text1',event: 'change1'},props: {text1: String}}</script>
$nextTick
- vue是异步渲染的
- data改变后,dom不会立刻改变
- nextTick 是dom渲染完后再回调
- 页面渲染会将data整合,多次修改data只会渲染一次
slot
- 具名插槽
- 作用域插槽
```vue
// 父
// 缩写 #default=”{user}”
{{ user.firstName }}
// 子
> **父级模板里的所有内容都是在父级作用域中编译的;子模版里的所有内容都是在子作用域中编译的**<a name="nQQA9"></a>#### 动态组件语法:`:is="componentName"`<a name="h2fjZ"></a>#### 异步组件(组件较大)语法:`() =>``import``([文件名])`<a name="ZBTSb"></a>#### 缓存组件`keep-alive`<a name="lY2yh"></a>#### mixins多个组件相同逻辑,抽离出来<br />问题:- 变量来源不明确,不利于阅读- 多mixin可能会造成命名冲突- mixin和组件可能出现多对多的关系,复杂度高<a name="DtGJS"></a>#### 自定义事件```javascriptimport Vue from 'vue'export default new Vue()// event.$emit 和 event.$on
