vue

本文深入介绍了Vue框架,包括MVVM设计模式、虚拟DOM树以及绑定语法、指令的使用。讲解了Vue如何实现数据绑定、元素显示控制以及v-for和v-if的区别。此外,还探讨了组件化开发、SPA单页面应用及其优缺点,以及Vue的计算属性、过滤器和Axios的使用。
摘要由CSDN通过智能技术生成

1.什么是vue

是第三方开发的基于MVVM设计模式的渐进式的纯前端js框架

2.原生DOM vs jQuery函数库 vs框架

  • 原生DOM:浏览器自带的操作网页内容的唯一途径(优点:万能,缺点繁琐)
  • jQuery函数库:第三方开发的基于DOM实现的操作网页内容的简化版函数(优点:简单,缺点:仅仅是对DOM的每一步操作进行的简化,并没有从根本上减少开发步骤)
  • vue框架:第三方开发的基于响应式编程方式的程序(优点:从根本上简化了开发步骤,缺点过于精简).

3.MVVM设计模式:将前端内容划分为3部分

  • (1).界面(view):包括HTML+CSS且HTML是增强版的(支持变量{ {n}},支持分支和循环).
  • (2). 数据模型(Mdel):是专门保存页面所需的变量和函数的对象(比如: var data={n:1}; var
    methods={add(){…},minus(){…}})
  • (3).视图模型(ViewModel):自动将data中的变量和methods中的函数送到界面中指定元素上,并自动保持页面与内存中数据同步的特殊对象

4.Vue的绑定原理(vue是如何实现MVVM设计模式):访问器属性+虚拟DOM树

  • 创建Vue类型的对象
  • 第一件事:将模型对象的内容包裹进Vue类型的对象中托管,将原data隐藏,并为data中每个变量定义访问其属性,访问器属性直接隶属于new Vue(),访问器属性是用来实时监控每个变量的变化。然后打散引入的methods,,methods中的所有方法就直接隶属于new Vue(),从而methods中的方法和data中变量的访问器属性就是平级的关系.故对象中平级的方法想使用平级的访问器属性,就加this.
  • 第二件事:创建虚拟DOM树,并渲染页面.当在new Vue()中任何情况下修改了变量其实修改的是访问器属性,然后会触发set(),自动执行set中的通知函数,把通知发给虚拟DOM树,告知虚拟DOM树哪个变量的值发生了变化,虚拟DOM树会遍历自己内部的元素,找到受本次变化影响的元素,用已经封装好的DOM操做只更新新页面中受影响的元素.

5.虚拟DOM树:

  • 在newVue()创建完对象后,自动扫描el:"#app"所指向的页面区域,在扫描过程中找出可能发生变化的元素后,仅保存这些可能发生变化的元素的简化版DOM树就是虚拟DOM树.
  • 优点:
  • 内容少:仅包含可能发生变化的元素.
  • 遍历快:可快速找到受影响的元素
  • 渲染效率高:只更新受影响的元素,不受影响的元素保持不变.
  • 已经封装了DOM增删改查操作,避免大量重复的代码.

6.绑定语法

  • <元素>{ {自定义变量名}}</元素>
  • { {}}中可放:变量,运算,三目,有返回值的函数调用,创建对象,访问数组元素,不能放程序结构(分支和循环)以及没有返回值的函数调用
  • { {}}只支持元素内容变化,不支持属性变化,无法实现程序结构.

7.指令
(1).v-bind元素的属性值随变量自动变化

  • <元素 :属性名=“js变量或表达式”>(:前的v-bind可省略)

(2).v-show控制一个元素的显示与隐藏

  • <元素 v-show=“判断条件” >
  • 若判断条件为true时,该元素原样显示
  • 若判断条件为false时,自动为当前元素添加display:none属性,该元素隐藏.

(3).v-if v-else控制两个元素二选一显示与隐藏

  • <元素1 v-if=“判断条件”>
  • <元素2 v-else>
  • 当new Vue()扫描到v-if时,先执行判断条件,若v-if的条件为true,则显示v-if所在的元素,自动删除v-else第二个元素.若v-if后的条件为false,则删除v-if所造元素,保留v-else所在的元素.
  • v-if和v-else之间不能插其他任何元素.

(4).v-if v-else-if v-else 多个元素多选一显示与隐藏

  • <元素 v-if=“条件1”>
  • <元素 v-else-if=“条件2”>
  • … …
  • <元素 v-else>

(5).v-for反复生成多个相同结构的元素

  • <要反复生成的元素 v-for="(elem,i) of 数组/对象/字符串/数字">
  • new Vue()扫描到v-for时,会遍历of后的东西,每遍历一个,就创建一个副本,同时of自动取出当前元素的内容,元素脂肪在elem变量中,元素的下标放在i变量中,elem和i变量可在当前元素上及其子元素上用于绑定语法
    (6).v-on 绑定事件
  • <元素 @事件名=“事件处理函数()”> v-on可用@代替
  • 如果同时传入实参值和事件对象:
  • <元素 @事件名=“事件处理函数(实参值,$event)”>
  • methos:{
  • 事件处理函数(形参值,e){…}
  • }

(7).v-clock 防止用户短暂看到{ {}}

  • 首先在CSS中写[v-clock]{display}
  • 然后在元素上添加属性v-clock

(8).v-text防止用户看到{ {}},v-text会覆盖{ {}}

  • <元素 v-text="xxx${变量和js表达式}"></元素>

(9).v-htm绑定HTML片段内容

  • 底层相当于.innerHTML
  • <元素 v-html=“变量或js表达式”></元素>

(10).v-once 只在首次加载页面时绑定一次数据显示,之后即时更新变量值页面也不会发生变化

  • <元素 v-once>{ {js表达式}}</元素>
  • v-once的元素根本没有加入DOM树

(11).v-pre防止内容中{ {}}被编译

  • <元素 v-pre>Vue框架采用{ {变量名}]}方式绑定元素的内容</元素>

8.笔试题:v-if其实也可单独使用控制一个元素是否显示隐藏,与v-show有什么区别呢?

  • 相同点:都是控制一个元素的显示与隐藏
  • 差别:v-if是通过删除元素的方式来控制显示和隐藏,而v-show是通过display:none方式来控制显示与隐藏.v-if因为修改了DOM树所以效率低而v-show不修改DOM树之修改元素的CSS属性,所以效率高.

9.v-for遍历的某一个元素被修改时,v-for重新生成所有元素而不是只更新其中一个,怎么解决?

  • 为要反复生成的元素添加:key=“i”,从而每次只需要修改一个数组元素对应的对应的一个HTML元素副本,效率更高.

10.v-on如何如何既传事件对象,又传自定义参数?

  • 用$event关键词,代替自动创建的event对象,手动传入事件处理函数中

11.vue的双向绑定v-model
既能将程序中的变化自动送到界面上去,又能将界面上用户所做的修改返向更新回程序的变量中.
在单向绑定原理(访问器属性+虚拟DOM树)的基础上,又自动为表单元素绑定了onput或onchange事件,只要用户输入或修改了表单元素的值,都会自动触发事件.
12.点击按钮获得文本框中输入的关键词:

<div id="app">
  <!--3种触发查询的方式: 
      点按钮可查询
      按回车键且抬起按键后也可执行查询
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值