目录
1. vue 介绍
1.1 概念
1.2 发明人
1.3 vue 特点
1.4 学前需掌握知识
2. 初始Vue
3. vue 模板语法
3.1 差值语法{{}}
3.2 指令语法
4. 数据绑定
4.1 单向绑定
4.2 双向数据绑定
5. el 和 data两种写法
5.1 el
5.2 data
6.MVVM 技术
6. 数据代理
6.1 回调Object.defineProperty
6.2 理解数据代理
6.3 vue 中的数据代理
7. 事件处理
7.1 事件绑定
7.2 事件修饰符
7.3 键盘修饰符
7.4 总结
8. 计算属性
9. 监视属性watch
9.2 深度监视
9.2 监视简写
9.3 watch和computed 对比
vue 是一套用于构建用户界面的渐进式JavaScript框架
vue 可以自底向上逐层的应用
vue 是由尤玉溪 在2013年发布的,2015年发布vue1.0.0,2016年发布vue2.0.0,2020年发布3.0.0
ES6语法规范、ES6模块化、包管理、原链、原型链、数组常用方法、axios、promise
使用vue 必须创建一个vue 实例,并传入一个配置对象
hello,{{name}}
区分: js 表达式 和 js 代码(语句)
good morning, {{name}}
点我去百度
单向数据绑定: //单向绑定
双向数据绑定: //双向绑定
单向数据绑定:
双向数据绑定:
new vue时配置了el属性;el: 'xxx',
先创建vue实例,在用v.$mount('xxx') 指el得值
两种都可以使用
const v = new Vue({
// el第一种写法
el: '#demo',
});
// el第二种写法
v.$mount('#demo'); //mount是挂载意思
对象式:date:{ }
函数式:data:function(){ return }
const e = new Vue({
// data 第一种写法:对象式
/* data: {
name: 'lisa',
} */
// data 第二种写法:函数式
data: function () {
return {
name: 'pi',
}
}
vue没有完全遵循 MVVM 模型,但是设计也受到了它的启发。因此在文档中经常会使用 vm
(ViewModel 的缩写) 这个变量名表示组件实例。
data中的属性(数据)放在viewmodel中
vm 的属性以vue原型上所有的属性,在vue魔板中可以直接使用
Object.defineProperty方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性,并返回此对象。
语法:Object.defineProperty(obj, prop, descriptor)
obj:
要定义属性的对象。prop:
要定义或修改的属性的名称或 Symbol 。descriptor:
要定义或修改的属性描述符。方法的属性:
数据代理:通过一个对象代理另一个对象中属性的操作(读写)
let obj = { x: 100 };
let obj2 = { y: 200 };
Object.defineProperty(obj, 'x', {
get() {
return obj.x;
},
set(value) {
obj.x = value;
}
})
基本原理:
优点:方便操作数据
写法一:
简单写法:
欢迎来到{{name}}的学习
注意:方法要写在 vue 里的methods对象中
- prevent:阻止默认事件(常用)
- stop:阻止事件冒泡(常用)
- once:事件只触发一次(常用)
- capture:使用事件的捕获模式
- self:只有
event.target
是当前操作的元素时才触发事件- passive:事件的默认行为立即执行,无需等待事件回调执行完毕
写法:
补充es6知识:e.target.value 获取的是触发事件输入得值
- 回车:enter
- 删除:delete (捕获“删除”和“退格”键)
- 退出:esc
- 空格:space
- 换行:tab (特殊,必须配合keydown去使用)
- 上:up
- 下:down
- 左:left
- 右:right
系统修饰键(ctrl、alt、shift、meta ) 使用:
vue 里面的data 里面的对象是属性,用属性去变化成一个全新的属性,叫计算属性
姓:
名:
全名:{{full}}
handler(newvalue,oldvalue){ }
两种写法:
1.new Vue({ ... watch:{})
2. vm.$watch()
Document
a的值是:{{numbers.a}}
b的值是:{{numbers.b}}
前提是不需要immedia、deep,只有handler,就可以简写
vue 管理的函数不能写箭头函数
watch:{
//1. 正常写法
isHot:{
// immediate:true, //初始化时让handler调用一下
// deep:true,//深度监视
handler(newValue,oldValue){
console.log('isHot被修改了',newValue,oldValue)
}
},
//简写
isHot(newValue,oldValue){
console.log('isHot被修改了',newValue,oldValue,this)
}
}
})
//2. 正常写法
vm.$watch('isHot',{
immediate:true, //初始化时让handler调用一下
deep:true,//深度监视
handler(newValue,oldValue){
console.log('isHot被修改了',newValue,oldValue)
}
})
//简写
vm.$watch('isHot', {
handler(newValue, oldValue) {
console.log('isHot被修改了', newValue, oldValue)
}
})
区别:
两个重要的小原则: