一、Vue 的基本认识
官网:
- 英文官网: https://vuejs.org/
- 中文官网: https://cn.vuejs.org/
1、Vue 的特点
- 遵循
MVVM
模式 - 编码简洁,体积小,运行效率高,适合移动/ PC 端开发
- 它本身只关注 UI, 可以轻松的引入 vue 插件或其他的第三库开发项目
二、Vue 的基本使用
永远的 HelloWord
编码:
1 | <div id="app"> |
效果示例:
Vue 的 MVVM
三、模板语法
模板的理解
- 动态的 html 页面
- 包含了一些 JS 语法代码
- 双大括号表达式 (
{{}}`) - 指令(以 v-开头的自定义标签属性) ### 1、双大括号表达式 - **语法:** `{{exp}}
- 双大括号表达式 (
- 功能: 向页面输出数据
- 可以调用对象的方法
2、指令一: 强制数据绑定
- 语法 指定变化的属性值
- 完整写法:v-bin:xxx = ‘yyy’ (yyy 会作为表达式解析执行)
- 简介写法: :xxx = ‘yyy’
3、指令二:绑定事件监听
- 功能:绑定指定事件名的回调函数
- 完整写法:
1 | v-on:keyup='xxx' v-on:keyup='xxx'(参数) v-on:keyup.enter='xxx' |
- 简介写法:
1 | @keyup='xxx' @keyup.enter='xxx' |
4、编码示例
1 | <div id="app"> |
效果示例:
四、计算属性和监视
1、计算属性
- 在 computed 属性对象中定义计算属性的方法
- 在页面中使用
{{方法名}}
来显示计算的结果
2、监视属性
- 通过 vm 对象的 $watch() 或 watch 配置来监视指定的属性
- 当属性变化时,回调函数自动调用,在函数内部进行计算
3、编码示例
1 | <div id="demo"> |
效果示例:
五、Class 与 Style 绑定
1、class 绑定
- :class = ‘xxx’
- 表达式是字符串: ‘classA’
- 表达式是对象:{classA: isA, classB: isB}
- 表达式是数组:[‘classA’,’classB’]
2、style 绑定
- :style=”{color: activeColor, fontSize: fontSize + ‘px’}”
- 其中 activeColor/fontSize 是 data 属性
3、编码示例
1 | <div id="demo"> |
效果示例:
六、条件渲染
1、条件渲染指令
- v-if 与 v-else
- v-show
2、比较 v-if 与 v-show
- 如果需要频繁切换 v-show 较好
- 当条件不成立时,v-if 的所有子节点不会解析(项目中使用)
3、编码
1 | <div id="demo"> |
效果示例:
七、列表渲染
1、列表显示指令
数组: v-for / index
对象: v-for / key
2、列表的更新显示
- 删除 Item
- 替换 Item
3、列表的高级处理
列表过滤
- VUE 数据绑定如何实现?
- Vue 会监视 data 中所有的层次的属性
- 对象中的属性数据通过添加 set 方法来实现监视
- 数组中的元素对应也实现了监视;重写数组一系列更新元素的方法
- 调用原生的对应的方法对元素进行处理
- 去更新界面
1 | <div id="demo"> |
效果示例:
列表排序
1 | <div id="app"> |
效果示例:
八、事件处理
1、绑定监听
v-on:xxx=”fun”
@xxx=”fun”
@xxx=”fun(参数)”
默认事件形参: event
隐含属性对象: $event
2、事件修饰符
- .prevent: 阻止事件的默认行为 event.preventDefault()
- .stop: 停止对事件冒泡 event.stopPropagation()
3、按键修饰符
- .keycode: 操作的是某个 keycode 值的键
- .keyName: 操作的某个按键名的键(少部分)
4、编码示例
1 | <div id="example"> |
效果示例:
九、表单输入绑定
1、使用 v-model 对表单数据自动收集
- text/textarea
- checkbox
- radio
- select
2、编码示例
1 | <div id="demo"> |
示例效果:
十、Vue 实例生命周期
1、生命周期流程图
2、Vue 生命周期分析
- 初始化显示
beforeCreate()
created()
beforeMount()
mounted()
- 更新状态: this.xxx = value
- beforeUpdate()
- updated()
- 销毁 vue 实例:vm.$destory()
- beforeDestory()
- destoryed()
3、常用的生命周期方法
- created()/mounted() : 发送 ajax 请求,启动定时器等异步任务。
- beforeDestory(): 做收尾工作, 如: 清除定时器。
4、编码示例
1 | <div id="test"> |
实例效果:
十一、过渡&动画
1、vue 动画的理解
- 操作 css 的 trasition 或 animation
- vue 会给目标元素添加/移除特定的 class
- 过渡的相关类名
- xxx-enter-active: 指定显示的 transition
- xxx-leave-active: 指定隐藏的 transition
- xxx-enter/xxx-leave-to: 指定隐藏时的样式
2、基本过渡动画的编码
- 在目标元素外包裹 <transition name=”xxx”>
- 定义 class 样式
- 指定过渡样式:transition
- 指定隐藏时的样式: opacity/其他
3、编码示例
示例一:
1 | <style type="text/css"> |
效果示例:
示例二:
1 | <style> |
效果示例:
十二、过滤器
功能: 对要显示的数据进行特定格式化在显示
注意:并没有改变原有的数据,是产生新的对应的数据
1、定义和使用过滤器
- 定义过滤器
1 | Vue.filter(filterName,function(value[arg1,arg2,...])){ // 进行一定的数据处理 |
- 使用过滤器
1 | <div>{{myData | filterName}}</div> |
2、编码示例
1 | <div id="test"> |
效果示例:
十三、内置指令与自定义指令
1、常用内置指令
指令 | 描述 |
---|---|
v-text | 更新元素的 textContent |
v-html | 更新元素的 innerHTML |
v-if | 如果为 true, 当前标签才会输出到页面 |
v-else | 如果为 false, 当前标签才会输出到页面 |
v-show | 通过控制 display 样式来控制显示/隐藏 |
v-for | 遍历数组/对象 |
v-on | 绑定事件监听, 一般简写为@ |
v-bind | 强制绑定解析表达式, 可以省略 v-bind |
v-model | 双向数据绑定 |
ref | 指定唯一标识, vue 对象通过$els 属性访问这个元素对象 |
v-cloak | 防止闪现, 与 css 配合: [v-cloak] { display: none } |
2、自定义指令
- 注册全局指令
1 | Vue.directive('my-directive', function(el, binding){ el.innerHTML = |
- 注册局部指令
1 | directives : { 'my-directive' : { bind (el, binding) { el.innerHTML = |
- 使用指令
1 | v-my-directive = 'xxx' |
3、编码示例
内置指令
1 | <div id="example"> |
效果示例:
自定义指令
1 | <!-- |
效果示例:
十四、自定义插件
说明:
- Vue 插件是一个包含 install 方法的对象
- 通过 install 方法给 Vue 或 Vue 实例添加方法,定义全局指令
编码示例:
- 插件 JS (vue-myPlugin.js)
1 | /* |
- 页面使用插件
1 | <div id="demo"> |
效果示例: