# VUE(2.x)
数据驱动---双向数据绑定。 ViewModel,保证数据和视图的一致性,DOM是数据的一种自然映射(数据驱动DOM变化)
组件化---可复用。页面可以看作全部是由组件树构成的
虚拟DOM--更高效。
# Vue
# Vue组件
- 组件是可复用的Vue实例
# 组件基础&组件注册
- 全局注册
- 局部注册
# 单文件组件
# 组件通讯
vue中组件通信方式整理 (opens new window)
- 父子组件之间通信
- props / $emit
- $children / $parent
- 非父子组件之间通信(兄弟组件、隔代关系组件等)
- Vuex
- localStorage / sessionStorage
# 插槽*
Slot 通俗的理解就是“占坑”,在组件模板中占好了位置,当使用该组件标签时候,组件标签里面的内容就会自动填坑(替换组件模板中slot位置)。
- 插槽内容--
基础插槽- 后备内容--
插槽的默认值
- 后备内容--
- 具名插槽--
<slot name="header"></slot>- 具名插槽的缩写(2.6.0新增)--
v-slot:header 可以被重写为 #header
- 具名插槽的缩写(2.6.0新增)--
- 作用域插槽--
让插槽内容能够访问子组件中才有的数据- 编译作用域--
父级模板里的所有内容都是在父级作用域中编译的;子模板里的所有内容都是在子作用域中编译的。
<!-- 子组件内 --> <span> <slot v-bind:userInfo="user"> {{ user.lastName }} </slot> </span><!-- 父组件 --> <current-user> <template v-slot:default="slotProps"> {{ slotProps.userInfo.lastName }} </template> </current-user>- 独占默认插槽的缩写语法--
当被提供的内容只有默认插槽时,组件的标签可以被当作插槽的模板来使用
只要出现多个插槽,请始终为所有的插槽使用完整的基于<!-- 父组件 --> <current-user v-slot="slotProps"> {{ slotProps.user.lastName }} </current-user><template>的语法- 解构插槽 Prop
<current-user v-slot="{ user }"> {{ user.firstName }} </current-user> - 编译作用域--
- 动态插槽名
<base-layout> <template v-slot:[dynamicSlotName]> ... </template> </base-layout>
Vue 插槽(slot)使用 (opens new window)
# 生命周期
# 生命周期图示

# 生命周期钩子函数
每个 Vue 实例在被创建时都要经过一系列的初始化过程——例如,需要设置数据监听、编译模板、将实例挂载到 DOM 并在数据变化时更新 DOM 等。同时在这个过程中也会运行一些叫做生命周期钩子的函数,这给了用户在不同阶段添加自己的代码的机会。
created
可以发起ajax请求,不能访问真实dom
mounted
也可以发起ajax请求,可以访问真实dom
注意 mounted 不会保证所有的子组件也都一起被挂载。如果你希望等到整个视图都渲染完毕,可以在 mounted 内部使用 vm.$nextTick:
mounted: function () {
this.$nextTick(function () {
// Code that will run only after the
// entire view has been rendered
})
}
beforeDestroy
实例销毁之前调用,在这一步,实例仍然完全可用。一般在这里移除事件监听器、定时器等,避免内存泄漏。
# 模板语法
# 插值
# 指令
- 内置指令
- 缩写
- 自定义指令 *
# 样式相关
# Class 与 Style 绑定
- 绑定 HTML Class
- 绑定内联样式
# 数据相关
# 表单输入绑定(v-model)
# computed
# watch
# filter*
# 事件处理
# 事件监听
v-on 指令监听 DOM 事件,并在触发时运行一些 JavaScript 代码
# 事件处理方法
v-on 接收一个需要调用的方法名称
# 事件修饰符
解决在事件处理程序中调用 event.preventDefault()等问题
WARNING
使用修饰符时,顺序很重要;相应的代码会以同样的顺序产生。因此,用 v-on:click.prevent.self 会阻止所有的点击,而 v-on:click.self.prevent 只会阻止对元素自身的点击。
# 全局API&内置组件
内置组件
- component
- transition
- transition-group
- keep-alive
- slot
# Vue CLI初始化项目
Vue CLI 是一个基于 Vue.js 进行快速开发的完整系统,提供:
- 通过 @vue/cli 实现的交互式的项目脚手架。
- 通过 @vue/cli + @vue/cli-service-global 实现的零配置原型开发。
- 一个运行时依赖 (@vue/cli-service),该依赖:
- 可升级;
- 基于 webpack 构建,并带有合理的默认配置;
- 可以通过项目内的配置文件进行配置;
- 可以通过插件进行扩展。
- 一个丰富的官方插件集合,集成了前端生态中最好的工具。
- 一套完全图形化的创建和管理 Vue.js 项目的用户界面。
npm install -g @vue/cli
# OR
yarn global add @vue/cli
关于旧版本
Vue CLI 的包名称由 vue-cli 改成了 @vue/cli。 如果你已经全局安装了旧版本的 vue-cli (1.x 或 2.x),你需要先通过 npm uninstall vue-cli -g 或 yarn global remove vue-cli 卸载它。
# Vue Router路由
Vue Router官方文档 (opens new window)