vue基础知识整理

每天的练习代码:https://github.com/hhhh25/VUE 

目录

DAY-1

MVC

MVVM

MVC(后端)和MVVM(前端)的区别

基本指令

事件修饰符

遍历方法

全局过滤器和私有过滤器

DAY-2

Vue实例的生命周期

1.创建期间

2.运行阶段

3.销毁阶段

过渡类名:写两组类的样式

进入过渡:

离开过渡

DAY-3

定义vue组件

组件间的切换:

DAY-4

父子组件之间数据的传递

父组件向子组件传值

父组件向子组件传递方法

子组件向父组件传值:

data和prop 的两点区别

ref(referance)获取Dom元素/组件

路由

前端路由:

代码高亮

vue-router的使用

路由规则中定义参数的方法

children属性实现路由嵌套

watch属性的使用

computed计算属性的使用

watch、computed和methods之间的对比


 


DAY-1

MVC

Model-View- Controller

模型-视图-控制器

模型Model:后端传递的数据

视图View:前端所看到的页面

控制器Controller:页面业务逻辑

使用MVC的目的就是将Model和View的代码分离

MVC是单向通信,View跟Model必须通过Controller来承上启下。

 

MVVM

Model-View-ViewModel

模型-视图-视图模型

模型Model:后端传递的数据

视图View:前端所看到的页面

视图模型ViewModel:

连接Model和View的桥梁,mvvm模型的核心。

方向:

1.模型---->视图,即将后端传递的数据转化为所看到的页面

实现方式:数据绑定

2.视图----->模型,将所看到的页面转化为后端的数据

实现方式:DOM事件监听

这两个方向都实现的,我们称之为数据的双向绑定。

 

总结:在MVVM的框架下视图和模型是不能直接通信的。它们通过ViewModel来通信,ViewModel通常要实现一个observer观察者,当数据发生变化,ViewModel能够监听到数据的这种变化,然后通知到对应的视图做自动更新,而当用户操作视图,ViewModel也能监听到视图的变化,然后通知数据做改动,这实际上就实现了数据的双向绑定。并且MVVM中的View 和 ViewModel可以互相通信。MVVM流程图如下:

MVC(后端)和MVVM(前端)的区别

并不是VM完全取代了C,ViewModel存在目的在于抽离Controller中展示的业务逻辑,而不是替代Controller,其它视图操作业务等还是应该放在Controller中实现。

也就是说MVVM实现的是业务逻辑组件的重用。

 

MVVM框架:VUE的介绍

Vue就是基于MVVM模式实现的一套框架。

在vue中:

Model:指的是js中的数据,如对象,数组等等。

View:指的是页面视图

viewModel:指的是vue实例化对象

它用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue 也完全能够为复杂的单页应用提供驱动。

 

 

vue实例控制的元素区域就是view

注意:new出来的对象就是mvvm的调度者

页面里面的数据data就是mvvm中的model,用来保存每个页面的数据

 

el:指定要控制的区域

data:(对象),指定了控制区域内要用到的数据

methods(对象),用来定义方法

 

在实例中,如果想要调用data/method中的方法,必须通过this.属性名/方法名来访问,这里的this就是new 出来的实例对象。

 

基本指令

v-cloak 解决闪烁

v-text / 插值表达式 都是将数据添加到页面 但v-text会覆盖元素中的内容

v-html 将内容解析为html,也会覆盖

v-bind: 绑定属性的指令,v-bind中可以写合法的表达式

简写 :

v-on: 绑定事件

简写:@

为事件指定处理函数的时候,如果加了小括号,就可以给函数传参了

 

v-bind:只能实现数据的单向绑定(从M绑定到V中去)

v-model:来实现数据的双向绑定

v-model只能运用在表单元素中 input(radio text address email...) select checkbox textarea

v-for:可用来遍历数组(普通数组,对象数组),对象,数字

key属性的使用:只接受string和number类型

 

v-if:每次都会重新删除或者创建元素

有更高的切换消耗

v-else:表示 v-if 的“else 块”

v-else 元素必须紧跟在带 v-if 或者 v-else-if 的元素的后面,否则它将不会被识别

v-show:只是让元素存在或者隐藏,只是简单的切换display属性

有更高的初始渲染消耗

注意:v-show 不支持