目录
一、什么是vue.js
核⼼理念:数据驱动视图,组件化开发
是⼀套⽤于构建⽤户界⾯的渐进式框架。
是以⾃底向上逐层应⽤,Vue 的核⼼库只关注视图层
二、为什么学习流行框架
1、轻量级框架:只关注视图层
2、简单易学:国人开发中文文档,易于理解和学习
3、视图、数据、结构分离;使操作数据更简单
4、不需要进行逻辑代码的修改。只需要操作数据就能完成相关操作
5、虚拟DOM:不在使用原生的dom节点,极大解放dom操作
6、运行速度更快
三、框架和库的区别
3.1框架
1、是一套完整的解决方案
2、对项目侵入性较大
3、更换框架需要重构整个项目
3.2库
1、提供一小部分功能
2、对项目侵入性较小
3、更换功能切换其他库即可,切换库容易
四、MVC与M VVM的区别
4.1MVC
1、model-View-Controller(后端分层开发概念)
v(view 视图层)展示数据,发送请求->C(controller调度层)接收数据,相应数据->M(model模型层)处理数据和数据库进行交换数据->数据库
4.2MVVM
V(view视图层)展示数据->VM(view-model)连接view和model->M(model 模型层)进行数据处理
vue代码结构
<script>
// 实例化vue
let vm = new Vue({
// 控制区
el: "#app",
// 存放数据
data: {
msg: "hello vue",
age: 18,
html: ' <a href="">我是连接标签</a>'
},
// 存放方法
methods: {
}
})
</script>
五、插值表达式、v-text、v -html
1、差值表达式{{}
展示数据,进行简单的运算
2、v-text、v-html
v-text:类似于js中的innerText覆盖元素中的内容
v-html:类似于js中的innerHTML,可识别富文本
3、v-text和v-html的异同
相同点:都会覆盖元素
不同点:v-html可以解析富文本;
v-text:不能解析富文本
六、v-bind v-on
v-bind 元素的属性绑定 简写 :
v-on 元素事件的绑定 简写 @
七、事件修饰符、v-model数据双向绑定
1、事件修饰符
.stop 阻止冒泡 :阻止事件继续向外传播
.capture 添加捕获模式
.self 当事件作用于本身的时候触发
.once 事件只会触发一次
.prevent 阻止默认事件
2、v-model数据双向绑定
v-model 数据双向绑定 ; 绑定表单控件
数据双向绑定的原理:
是采用数据劫持结合发布者-订阅者模式的方式,
通过Object.defineProperty()来劫持各个属性的setter,getter,
在数据变动时发布消息给订阅者,触发相应的监听回调来渲染视图。
八、Vue中样式的使用
1、使用class样式
1、数组 :class=“[class1,class2]”
2、三目表达式 :class=“age<18?class1:class2”
3、对象 :class{red:ture}
对象的键是属性的名字,值是Booleam类型
4、数组内置对象 :class=“[{‘red’:true},{fs30:false}]”
11.2、使用内联样式
1、直接写在元素上通过:style的形式,书写样式对象
<div :style="{color : 'red','font-size' : '30px'}">
2、将样式对象,定义到data中,并直接引用到:style中
<body>
<div id="app">
<div :style=style1>红⾊字体</div>
<div :style=style2>字号30px、字体加粗</div>
</div>
</body>
<script>
let vm = new Vue({
el: "#app",
data: {
style1: 'color:red',
style2: {
fontSize: "30px",
"font-weight": 700
}
},
methods: {}
})
</script>
3、在:style中通过数组,引用多个data上的样式对象
4、在:style 中通过函数返回对象
九、V-for和key属性
1、 v-for
1、遍历数组
<!-- 1、遍历数组 -->
<div v-for="(item1,index1) in list" :key="item1">
<!-- item 数组中的每一个元素 index:索引 -->
{{item1}}==={{index1}}
</div>
<div v-for="item in list">
<!-- item 数组中的每一个元素 index:索引 -->
{{item}}
</div>
<!-- 2、遍历对象 -->
<!-- 2、遍历对象 -->
<div v-for="(value,key,index) in obj">
{{value}}=={{key}}=={{index}}
</div>
<!-- 3、遍历数字 -->
<!-- 3、遍历数字 -->
<div v-for="num in 5">
<div>免费</div>
</div>
2、key的作用:
提高重排效率,就地复用 (diff算法)
注意点:必须是数字或者字符串 必须是唯一值
十、v-if与v -show(显示隐藏元素)
v-if和v-show的异同:
相同点:显示和隐藏元素
不同点:v-show: display:none显示和隐藏元素
v-if:通过删除dom元素
应用场景:
只修改一次的时候可以使用v-if,
频繁切换的时候可以使用v-show