说出vue常用的指令:

v-text,  v-html,  v-bind,  v-for,  v-if,  v-else,  v-else-if,   v-show,    v-on,

谈谈你对MVC的理解:

MVC是软件开发中常见的开发模式,主要应用于后端,将程序划分为M模型、V视图、C控制器从而便于团队协作开发,减少代码冗余

谈你对MVVM理解:

Model层代表数据模型、
View层代表UI组件、ViewModel是Model、View层的桥梁,数据会绑定到ViewModel并监控模型数据变化自动更新同步到页面,视图变化会通知ViewModel层更新数据。

谈谈MVVM和MVC区别:

相同点:都是软件开发常见的开发模式或者开发思想

不同点:

1- MVC后端居多,MVVM前端
2- MVC单向通信 目的将M和V代码分离,MVVM则是双向通信,不需要手动操作DOM

说一下v-show、v-if的区别:

都可以控制元素隐藏显示,v-if语法更强、控制DOM、v-show控制CSS

高频切换例如二维码、登录弹框、提示框、删除提示框、tab选项卡,推荐使用v-show 来减少DOM频繁删除创建所产生的额外性能开销

判断循环v-if、v-for优先级:

在 vue 2中,在一个元素上同时使用 v-ifv-for 时,v-for的优先级高于v-if     缺点:会产生不必要的性能开销

而在 vue 3 中, v-if的优先级高于v-for            vue3 解决了这个问题,v-if判断为false 后,不会执行v-for

说一下v-model原理:

v-model其底层是基于【:value】和【@input】 封装的语法糖

VUE2响应式原理(中级):

Vue初始化数据时,底层会通过Object.defineProperty对data中的模型数据进行数据劫持,数据变化会通知进行更新操作。

VUE2响应式原理(高级):

底层通过Object.defineProperty进行数据劫持结合   发布订阅模式      通知视图更新。

(Vue是采用数据劫持结合发布/订阅模式的方式,通过Object.defineProperty()来劫持各个属性的setter,getter,在数据变动时发布消息给订阅者,触发相应的监听回调。)

VUE2响应式数据无法劫持原因、和解决方案:

Object.defineProperty    不支持  复杂数据类型   劫持

对象递归 、数组重写 、额外api ($forceUpdate() 、$set)

$forceUpdate 原理:

调用 notify()  强制视图更新

$set 原理:

defineReactive(this.data数据, 要劫持得数组索引或对象键, 默认值)     建立响应式依赖    指定数据更新

VUE3响应式原理:

proxy 构造函数结合 Reflect 内置对象 拦截

-Object.defineProperty 拦截的是对象的属性,会改变原对象。 proxy 是拦截整个对象,通过 new 生成一个新对象,不会改变原对象。
- proxy 语法更强,拦截方式除了上面的 get 和 set ,还有 11 种,以前就6个
- proxy 特性更强,可以监听未定义的,针对于N层则get时判断递归添加proxy拦截即可

最新文章

  1. 初学者--bootstrap(五)JavaScript插件(上)----在路上(6)
  2. c++学习笔记01-输入输出流&&文件输入输出操作
  3. (实用篇)PHP页面跳转到另一个页面的方法总结
  4. windows7开启虚拟wifi和虚拟无线AP的方法
  5. Jstl标签库/Filter过滤器
  6. poj3094---对字符串的处理
  7. insertBefore方法(javascript与jQuery)
  8. [记录]Shell中的getopts和getopt用法
  9. BZOJ 4804
  10. numpy, matplotlib库学习笔记
  11. linux 命令基础一。
  12. P5280 [ZJOI2019]线段树
  13. 位运算------按位与、按位或、按位异或、取反、<<、>>、>>>
  14. 使用Python完成排序(冒泡、选择、插入法)
  15. 修改linux 最大文件限制数 ulimit
  16. 基于prometheus监控k8s集群
  17. C++头文件的工作原理
  18. Lua中的注释
  19. bzoj1050 旅行
  20. 使用cmstp绕过应用程序白名单

热门文章

  1. 为什么不推荐Python初学者直接看项目源码
  2. PHP的Sodium加密扩展函数了解
  3. dede5.7 标题长度限制修改
  4. Python - 生成requirement.text 文件
  5. [手机编程]Aid Learning--换源+数据库安装
  6. requests接口自动化-列表与字典参数化
  7. DBeaver MSSQL 支持TLS设置
  8. 设计 4 个线程,其中两个线程每次对 j 增加 1 ,另外两个线程对 j 每次减少 1 。写出程序。
  9. 纯净Ubuntu16安装CUDA(9.1)和cuDNN
  10. Java基础之(七):Scanner对象