VUE常见问题

对于MVVM的理解

  • MVVM 是 Model-View-ViewModel 的缩写

  • Model代表数据模型,也可以在Model中定义数据修改和操作的业务逻辑

  • View 代表UI 组件,它负责将数据模型转化成UI 展现出来。

  • ViewModel 监听数据模型的改变和控制视图行为、处理用户交互,简单理解就是一个同步View 和 Model的对象,连接Model和View

在MVVM架构下,View 和 Model 之间并没有直接的联系,而是通过ViewModel进行交互,Model 和 ViewModel 之间的交互是双向的, 因此View 数据的变化会同步到Model中,而Model 数据的变化也会立即反应到View 上

ViewModel 通过双向数据绑定把 View 层和 Model 层连接了起来,而View 和 Model 之间的同步工作完全是自动的,无需人为干涉,因此开发者只需关注业务逻辑,不需要手动操作DOM, 不需要关注数据状态的同步问题,复杂的数据状态维护完全由 MVVM 来统一管理

VUE的生命周期阶段(8个)

  • beforeCreate(创建前)

    在数据观测和初始化事件还未开始

  • created(创建后)

    完成数据观测,属性和方法的运算,初始化事件,el属性还没有显示出来

  • beforeMount(载入前)

    挂载开始之前被调用,相关的render函数首次被调用(虚拟DOM),实例已完成以下的配置: 编译模板,把data里面的数据和模板生成html,完成了el和data 初始化,注意此时还没有挂载html到页面上

  • mounted(载入后)

    挂载完成,也就是模板中的HTML渲染到HTML页面中,此时一般可以做一些ajax操作,mounted只会执行一次

  • beforeUpdate(更新前)

    在数据更新之前被调用,发生在虚拟DOM重新渲染和打补丁之前,可以在该钩子中进一步地更改状态,不会触发附加地重渲染过程

  • updated(更新后)

    在由于数据更改导致的虚拟DOM重新渲染和打补丁时会调用,调用时,组件DOM已经更新,所以可以执行依赖于DOM的操作,然后在大多情况下,应该避免在此期间更改状态,因为这可能会导致更新无限循环,该钩子在服务器端渲染期间不被调用

  • beforeDestroy(销毁前)

    在实例销毁之前调用,实例仍然完全可用,这一步还可以用this来获取实例,一般在这一步做一些重置的操作,比如清除掉组件中的定时器和监听的dom事件

  • destroyed(销毁后)

    在实例销毁之后调用,调用后,所以的事件监听器会被移出,所有的子实例也会被销毁,该钩子在服务器端渲染期间不被调用

什么是vue生命周期

  • Vue 实例从创建到销毁的过程,就是生命周期。从开始创建、初始化数据、编译模板、挂载Dom→渲染、更新→渲染、销毁等一系列过程,称之为 Vue 的生命周期

vue生命周期的作用是什么

  • 它的生命周期中有多个事件钩子,让我们在控制整个Vue实例的过程时更容易形成好的逻辑

第一次页面加载会触发哪几个钩子

  • beforeCreate,
  • created
  • beforeMount
  • mounted

DOM 渲染在哪个周期中完成

  • mounted

v-for中key值的作用

  • 当 Vue.js 用 v-for 正在更新已渲染过的元素列表时,它默认用“就地复用”策略。如果数据项的顺序被改变,Vue 将不会移动 DOM 元素来匹配数据项的顺序, 而是简单复用此处每个元素,并且确保它在特定索引下显示已被渲染过的每个元素,key的作用主要是为了高效的更新虚拟DOM

v-if 与 v-for的优先级

  • v-for优先于v-if被解析

  • 如果同时出现,每次渲染都会先执行循环再判断条件,无论如何循环都不可避免,浪费了性能

  • 要避免出现这种情况,则在外层嵌套template,在这一层进行v-if判断,然后在内部进行v-for循环

  • 如果条件出现在循环内部,可通过计算属性提前过滤掉那些不需要显示的项

v-if与v-show的区别

  • v-if 是真正的条件渲染,直到条件第一次变为真时,才会开始渲染

  • v-show 不管初始条件是什么会渲染,并且只是简单地基于 CSS 的 “display” 属性进行切换

  • v-if 适用于不需要频繁切换条件的场景;v-show 则适用于需要非常频繁切换条件的场景

VUE常用指令

  • v-model 在表单 <input><textarea><select> 元素上创建双向数据绑定
  • v-for 循环
  • v-if 判断
  • v-show 展示
  • v-on: click = 'function' 事件绑定

VUE常见问题的更多相关文章

  1. Vue 常见问题汇总

    Q:我给组件内的原生控件添加事件,怎么不生效了!!! <!--比如用了第三方框架,或者一些封装的内置组件; 然后想绑定事件--> <!--// 错误例子1--> <el- ...

  2. vue常见问题处理 -- 页面刷新时,如何保持原有vuex中的state信息

    一.页面刷新时,如何保持原有vuex中的state信息 页面刷新后,原有的 vuex 中的 state 会发生改变,如果在页面刷新之前,可以将 state 信息保存,页面重新加载时,再将该值赋给 st ...

  3. Vue常见问题集中

    a.VScode保持vue语法高亮的方式: 1.安装插件:vetur.打开VScode,Ctrl + P 然后输入 ext install vetur 然后回车点安装即可. 2.在 VSCode中使用 ...

  4. vue常见问题随笔集

    1.vuex操作对应关系 设置          触发/获取 action <-> dispatch mutations <-> commit getters <-> ...

  5. 记录前端开发vue常见问题,不断更新

    1.点击刷新当天组件 1.可以在query中添加一个时间戳,缺点就是不好看 2.加一个重定向页面redirect页面,然后在beforecreate时this.$router.replace原路径 2 ...

  6. Vue刨坑

    vue常见问题 1.在自定义组件里,你可以像任何普通元素一样用v-for.eg1: <my-component v-for="item in items"></m ...

  7. 法门扫地僧总结vue面试题(部分来源网络)

    Front-End 前端开发工程师面试宝典!   (本文部分有转载,不定期更新!)             前言(README.md) 本仓库是我整理的前端常见面试题,大部分由我整理,其中个别部分参考 ...

  8. 史上最强vue总结~万字长文---面试开发全靠它了

    vue框架篇 vue的优点 轻量级框架:只关注视图层,是一个构建数据的视图集合,大小只有几十kb: 简单易学:国人开发,中文文档,不存在语言障碍 ,易于理解和学习: 双向数据绑定:保留了angular ...

  9. vs code 使用技巧整理

    快捷键 Ctrl + Shift + F:在文件夹中搜索; Ctrl + Shift + P:命令面板; Ctrl + Shift + T:重新打开 关闭的编辑页面; Ctrl+Shift+PgUp/ ...

随机推荐

  1. 微服务从代码到k8s部署应有尽有系列(三、鉴权)

    我们用一个系列来讲解从需求到上线.从代码到k8s部署.从日志到监控等各个方面的微服务完整实践. 整个项目使用了go-zero开发的微服务,基本包含了go-zero以及相关go-zero作者开发的一些中 ...

  2. 终极指南:企业级云原生 PaaS 平台日志分析架构全面解析

    早些时候 Erda Show 针对微服务监控.日志等内容做了专场分享,很多同学听完后意犹未尽,想了解更多关于日志分析的内容.Erda 团队做日志分析也有一段时间了,所以这次打算和大家详细分享一下我们在 ...

  3. Python中特殊函数__str__()

    在类中定义了__str__(self)方法,那么当使用print打印实例对象的时候,就会直接打印出在这个方法中return的数据. 案列: 1 class Book: 2 3 def __init__ ...

  4. tor-browse

    https://sourceforge.net/projects/t-browser/

  5. Tableau退出已成定局,关键是用户如何“软着陆”

    近期,BI界发生了一件大事,引起了大家的热议. 简单来说:Tableau停止在中国的原厂服务,把售后.解决方案等归到新加坡,在中国区域的运营将有阿里接管. 大部分业内人士认为中国区业务可能以出售.代理 ...

  6. 给npm换源

    为什么要换源? npm 官方站点 http://www.npmjs.org/ 并没有被墙,但是下载第三方依赖包的速度让人着急啊! 幸运的是,国内有几个镜像站点可以供我们使用,本人在使用 http:// ...

  7. Git教学教程--学生使用教程(非Git操作版)

    一.注册(必须) 注册完成后由"教师"将你加入高校/企业组即可: 二.查看项目(必须) 三.查看组织 打开后可查看到如下界面,列出的项目为可操作项目 四.查看高校/企业信息 五.上 ...

  8. 5.注入内部Bean

    我们将定义在 <bean> 元素的 <property> 或 <constructor-arg> 元素内部的 Bean,称为"内部 Bean". ...

  9. List<T>去重复

    代码 class ListDistinctDemo { static void Main(string[] args) { List<Person> personList = new Li ...

  10. C# Event (1) —— 我想搞个事件

    本文地址:https://www.cnblogs.com/oberon-zjt0806/p/15975299.html 本文最初来自于博客园 本文遵循CC BY-NC-SA 4.0协议,转载请注明出处 ...