学习目标:
1、能够说出Vue基本用法;
2、能够说出Vue的模板语法;
3、能够说出Vue的常用特性;
4、能够基于Vue实现案例效果。目录:
1、Vue概述
2、Vue基本使用
3、Vue模板语法
4、基础案例
5、Vue常用特性
6、综合案例
1、Vue概述
国产框架,作者尤雨溪。渐进式JavaScript框架。
渐进式:
声明式渲染——>组件系统——>客户端路由——>集中式状态管理——>项目构建
优点:
1、易用:熟悉HTML、CSS、JavaScript知识后,可快速上手Vue;
2、灵活:在一个库和一套完整框架之间自如伸缩;
3、高效:20KB运行大小,超快虚拟DOM。 2、Vue基本使用(实现HelloWord案例)
传统开发模式对比:
1、原生Js
<div id="msg"></div>
<script type="text/javascript">
var msg = "Hello World";
var div = document.getElementById("msg");
div.innerHTML = msg;
</script>
2、Jquery
<div id="msg"></div>
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript">
var msg = "Hello World";
$("#msg").html(msg);
</script>
3、Vue.js
<div id="app">
<div>{{msg}}</div>
<div>
<script type="text/javascript" src="js/vue.js"></script>
<script type="text/javascript">
var vm = new Vue({
el:"#app",
data:{
msg:"Hello World"
}
})
</script>
实例参数分析:
el:元素的挂载位置(值可以是CSS选择器或者DOM元素);
data:模型数据(值是一个对象)。
插值表达式用法(插值表达式即代码中的{{}}):
将数据填充到HTML标签中;
插值表达式支持基本的计算操作。
例如:<div>{{1 + 3}}</div>//页面会显示4
Vue代码运行原理分析:
Vue代码——>Vue框架——>原生js代码3、Vue模板语法3.1、模板语法概述:
如何理解前端渲染:
把数据填充到HTML标签中;
模板+数据——>前端渲染=静态的HTML内容
前端渲染方式:
1、原生js拼接字符串:
基本就是将数据以字符串的方式拼接到HTML标签中。缺点:不同开发人员的代码风格差别很大,随着业务的复杂,后期的维护变得逐渐困难起来。
2、使用前端模板引擎:
它拥有自己的一套模板语法规则,与拼接字符串相比,代码明显规范了很多。优点:大家都遵循同样的规则写代码,代码可读性明显提高了,方便后期额维护。缺点:没有专门提供事件机制。
3、使用Vue特有的模板语法:
插值表达式、指令、事件绑定、属性绑定、样式绑定、分支循环结构。3.2、指令:
什么是指令?
什么是自定义属性
指令的本质就是自定义属性
指令的格式:以v-开始(如:v-cloak)
v-cloak指令用法:
插值表达式存在的问题:“闪动”
如何解决该问题:使用v-cloak指令
解决该问题的原理:先隐藏,替换好值之后再显示最终的值
详细使用方法参见api:https://cn.vuejs.org/v2/api/#v-cloak
3.3、数据绑定指令:
v-text 填充纯文本
相比插值表达式更加简洁
详细使用方法参见api:https://cn.vuejs.org/v2/api/#v-text
v-html 填充HTML片段
存在安全问题
本网站内部数据可以使用,来自第三方的数据不可以使用
详细使用方法参见api:https://cn.vuejs.org/v2/api/#v-html
v-pre 填充原始信息
显示原始信息,跳过编译过程
详细使用参见api:https://cn.vuejs.org/v2/api/#v-pre3.4、数据响应式:
如何理解响应式:
html5中的相应式(屏幕尺寸的变化导致样式的变化)
数据响应式(数据的变化导致页面内容的变化)
什么是数据绑定:
数据绑定:将数据填充到标签中
v-once 只编译一次
显示内容之后不再具有响应式功能3.5、双向数据绑定:
什么是双向数据绑定:
简单来说就是改变表单输入域中的内容会导致数据的变化,数据的变化又会导致页面显示内容的变化。
双向数据绑定分析:
v-model指令用法:
<input type="text" v-model="username"/>
详细用法参见api:https://cn.vuejs.org/v2/api/#v-model3.6、MVVM设计思想:
M(model)
V(view)
VM(View-Model)3.7、事件绑定:
Vue如何处理事件:
v-on指令用法:
<input type="buttom" v-on:click="num++"/>
v-on简写形式:
<input type="buttom" @click="num++"/>
事件函数的调用方式:
直接绑定函数名:
<buttom v-on:click="say">Hello</buttom>
调用函数:
<buttom v-on:click="say()">say Hello</buttom>
事件函数参数传递:
普通参数和事件对象
<buttom v-on:click="say('hi',$event)">say hi</buttom>
事件绑定-参数传递注意点:
1、如果事件直接绑定函数名,那么默认传递事件对象作为事件函数的第一个参数;
2、如果事件绑定函数调用,那么事件对象必须作为最后一个参数显示传递,并且事件对象的名称必须是$event。
事件修饰符:
.stop阻止冒泡
<a v-on:click.stop="handle">跳转</a>
.prevent阻止默认行为
<a v-on:click.prevent="handle">跳转</a>
更多事件修饰符参见api:https://cn.vuejs.org/v2/api/#v-on
按键修饰符:
.enter回车键
<input v-on:keyup.enter="submit">
.delete删除键
<input v-on:keyup.delete="handle">
更多的按键修饰符参见api:https://cn.vuejs.org/v2/guide/events.html#按键修饰符
自定义按键修饰符:
全局config.keyCodes对象
Vue.config.keyCodes.f1 = 112
详细使用方法参见api:https://cn.vuejs.org/v2/guide/events.html#%E6%8C%89%E9%94%AE%E7%A0%81
3.8、属性绑定:
Vue如何动态处理属性?
v-bind指令用法
<a v-bind:href="url">跳转</a>
缩写形式
<a :href="url">跳转</a>
v-model的底层实时原理分析
<input v-bind:value="msg" v-on:input="msg=$event.target.value">
通过属性绑定和事件绑定来实现v-model
3.9、样式绑定:
class样式处理
对象语法
<div v-bind:class="{active:isActive}"></div>
数组语法
<div v-bind:class="{activeClass,errorClass}"></div>
style样式处理
对象语法
<div v-bind:style="{color:activeColor,fontSize:fontSize}"></div>
数组语法
<div v-bind:style="[baseStyles,overrideStyles]"></div>
3.10、分支循环结构:
分支结构
v-if
v-else
v-else-if
v-show
v-if与v-show的区别
v-if控制元素是否渲染到页面
v-show控制元素是否显示(已经渲染到了页面)
循环结构
v-for遍历数组
<li v-for="item in list">{{item}}</li>
<li v-for="(item,index) in list">{{item}}+"---"+{{index}}</li>
key的作用:帮助Vue区分不同的元素,从而提高性能
<li :key="item.id" v-for="(item,index) in list">{{item}}+"---"+{{index}}</li>