把数据填充到HTML标签中,通过前端渲染,生成静态HTML内容
模板的结构和最终显示的效果基本一致
<div id="app">
{{ message }}
div>
var app = new Vue({
el: '#app',
data: {
message: 'Hello Vue!'
}
})
{{ }}
插值表达式存在的问题:“闪动”
使用v-cloak指令
解决该问题的原理:先隐藏,替换好值之后再显示最终的值
v-
数据绑定:将数据填充到标签中
v-text 填充纯文本
相比插值表达式更加简洁
v-html 填充HTML片段
存在安全问题
本网站内部数据可以使用,来自第三方的数据不可以用
v-pre 填充原始信息
显示原始信息,跳过编译过程(分析编译过程)
v-once 只编译一次
显示内容之后不再具有响应式功能
v-model指令用法
MVVM设计思想
M(model)
V(view)
VM(View-Model)
v-on
v-on指令用法
<input type='button' v-on:click='num++'/>
简写形式@
<input type='button' @click='num++'/>
3.1 事件修饰符
.stop
阻止冒泡
<a v-on:click.stop="handle">跳转a>
.prevent
阻止默认行为
<a v-on:click.prevent="handle">跳转a>
3.2 按键修饰符
.enter
回车键
<input v-on:keyup.enter='submit'>
3.3 自定义按键修饰符
全局 config.keyCodes
对象
Vue.config.keyCodes.f1 = 112
v-bind
v-bind 指令被用来响应地更新 HTML 属性
v-bind 指令用法
<a v-bind:href='url'>跳转a>
缩写形式:
<a :href='url'>跳转a>
绑定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, overridingStyles]">div>
v-if
v-if
v-else
v-else-if
v-show
v-if与v-show的区别
v-if控制元素是否渲染到页面
v-show控制元素是否显示(已经渲染到了页面)
v-for
v-for遍历数组list
<li v-for='item in list'>{{item}}li>
<li v-for='(item,index) in list'>{{item}} + '---' +{{index}}li>
v-for遍历对象object
<div v-for='(value, key, index) in object'>div>
key的作用:帮助Vue区分不同的元素,从而提高性能
<li :key='item.id' v-for='(item,index) in list'>{{item}} + '---' {{index}}li>
基于Vue的表单操作
Input 单行文本
textarea 多行文本
select 下拉多选
radio 单选框
checkbox 多选框
number:转化为数值
trim:去掉开始和结尾的空格
lazy : 将input事件切换为change事件
例如:
<input v-model.number="age" type="number">
Vue.directive()
原因:内置指令不满足需求时
自定义指令的语法规则
获取元素焦点的指令
<input type="text" v-focus>
Vue.directive('focus' {
inserted: function(el) {
// 获取元素的焦点
el.focus();
}
})
自定义过滤器
Vue.filter(‘过滤器名称’, function(value){
// 过滤器业务逻辑
})
过滤器的使用
{{msg | 过滤器名称}}
局部过滤器
filters:{
capitalize: function(){}
}
指VUE实例所产生的整个过程