一、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">  | 
效果示例:









