组件化开发,提高开发效率
声明式编码,不需要操作DOM,提高开发效率
diff算法,DOM元素复用,提高效率
new Vue({
el: '#root',
data: {
name: "测试"
},
//方法都写在methods里
methods: {
showInfo1() {
alert("hello")
}
}
});js表达式:会产生一个值(a,b,a+b,demo(1))
js语句:控制代码的运行 (for循环,if判断)
1.单向绑定
v-bind 可以简写为 :
<input type="text" :value="name"> <!-- 单向绑定 -->只能从data中将数据渲染到页面,页面数据的变化不能影响到data中的数据变化
2.双向绑定
v-model=“”,只能用于表单类元素
<input type="text" v-model="name"> <!-- 双向绑定 -->可以从data中将数据渲染到页面,页面数据的变化也可以改变data中的数据
number 就是将输入的值转为数字类型
<input type="text" v-model.number="n1"/>1
2.trim 过滤首位的空格
<input type="text" v-model.trim="msg"/>
lazy 光标移走才将输入的数据存储到data中
<input type="text" v-model.lazy ="msg"/>

M :data中的数据
V:页面
VM:创建的vue实例
总的来说,就是将data中的数据通过vue实例渲染在页面,页面数据的变化也可以改变data中的数据
data中所有属性最终都会出现在vm上
vm上所有属性和vue原型上所有属性都可以在{{ }}中直接输出
给对象添加属性
Object.defineProperty(person, 'age',{value:18 })第一个是对象名,第二个为要添加的key,第三个为配置项{value:19}
defineProperty这个方法增加的属性不能被遍历、删除、更改

get() set()方法
let number = 18;
let person = {
name: "张三",
sex: "男"
};
Object.defineProperty(person, 'age', {
//当有人读取person.age时,函数被调用,就会返回一个值
get() {
console.log("有人读取了age的值");
return number;
},
//当有人修改person.age时,函数被调用,且会收到修改的值
set(value) {
console.log("有人修改了age的值");
number = value;
}
});通过一个对象代理另一个对象中属性的操作
let obj1 = { x: 200 };
let obj2 = { y: 300 };
Object.defineProperty(obj2, "x", {
get() {
return obj1.x;
},
set(value) {
obj1.x = value;
}
})vue中的数据代理
将data中的数据挂载到vm上的_data属性中
_data中的每一个属性配置一个getter、setter,进行数据代理,就是进行数据的读写操作,也是挂载到vm实例上
vm.name可以修改_data中name的值,这就是数据代理,通过一个对象来修改另一个对象的属性值