这么全面的自查Vue掌握情况,又忍不住收藏了
答对这些问题,检测你是否真正掌握了Vue 请说一下响应式数据的原理
默认 Vue 在初始化数据时,会给 data 中的属性使用 Object.defineProperty 重新定义所有属性,当页面到对应属性时,会进行依赖收集(收集当前组件中的 watcher)如果属性发生变化会通知相关依赖进行更新操作
收集当前组件中的 watcher ,我会进一步问你什么叫当前组件的 watcher ?我面试时经常听到这种模糊的说法,感觉就是看了些造玩具的文章就说熟悉响应式原理了,起码的流程要清晰一些: 由于 Vue 执行一个组件的 render 函数是由 Watcher 去代理执行的, Watcher 在执行前会把 Watcher 自身先赋值给 Dep.target 这个全局变量,等待响应式属性去收集它 这样在哪个组件执行 render 函数时访问了响应式属性,响应式属性就会精确的收集到当前全局存在的 Dep.target 作为自身的依赖 在响应式属性发生更新时通知 Watcher 去重新调用 vm._update(vm._render()) 进行组件的视图更新
关于这个问题,有一个比较有意思的经历是,有一位同学前面部分都答得很好,但是我问他 watcher 是利用了什么数据结构去存储的时候,他就不太能答得出来了。所以是否真的阅读过源码,可以通过类似只要你看过,就一定印象深刻的细节来试探。
响应式部分,如果你想在简历上写熟悉的话,还是要抽时间好好的去看一下源码中真正的实现,而不是看这种模棱两可的说法就觉得自己熟练掌握了。 说一下Vue双向数据绑定原理,你是怎么理解的。需要实现的vue双向数据绑定,需要使用到一下三种技术 通过get()劫持 取值操作 通过set()劫持 赋值操作 Dep类:负责进行 依赖收集 Watcher类:负责 订阅一些事件 进行数值的累加计算 链式获取对象的属性值 数组的reduce()方法 发布-订阅者模式 使用Object.defineProperty()进行数据劫持 vue初始化过程中都做了什么。处理组件配置项 初始化根组件时进行了选项合并操作,将全局配置合并到根组件的局部配置上 初始化每个子组件时做了一些性能优化,将组件配置对象上的一些深层次属性放到 vm.$options 选项中,以提高代码的执行效率 初始化组件实例的关系属性,比如 、children、、refs 等 处理自定义事件 调用 beforeCreate 钩子函数 初始化组件的 inject 配置项,得到 ret[key] = val 形式的配置对象,然后对该配置对象进行浅层的响应式处理(只处理了对象第一层数据),并代理每个 key 到 vm 实例上 数据响应式,处理 props、methods、data、computed、watch 等选项 解析组件配置项上的 provide 对象,将其挂载到 vm._provided 属性上 调用 created 钩子函数 如果发现配置项上有 el 选项,则自动调用 mount方法,也就是说有了el选项,就不需要再手动调用mount 方法,反之,没提供 el 选项则必须调用 $mount 接下来则进入挂载阶段 为什么vue采用异步渲染。
vue是组件级更新,当前组件里的数据变了,它就会去更新这个组件。当数据更改一次组件就要重新渲染一次,性能不高,为了防止数据一更新就更新组件,所以做了个异步更新渲染。(核心的方法就是nextTick)
原理: 当数据变化后会调用notify方法,将watcher遍历,调用update方法通知watcher进行更新,这时候watcher并不会立即去执行,在update中会调用queueWatcher方法将watcher放到了一个队列里,在queueWatcher会根据watcher的进行去重,多个属性依赖一个watcher,如果队列中没有该watcher就会将该watcher添加到队列中,然后通过nextTick异步执行flushSchedulerQueue方法刷新watcher队列。flushSchedulerQueue中开始会触发一个before的方法,其实就是beforeUpdate,然后watcher.run() 才开始真正执行watcher,执行完页面就渲染完成啦,更新完成后会调用updated钩子 vue中常用的一些指令,说一下vue自定义指令。
1-常用指令 v-once 让界面不要跟着数据变化, 只渲染一次
2-常用指令v-cloak
3-常用指令v-text 和 v-html
4-常用指令v-if 条件渲染: 如果v-if取值是true就渲染元素, 如果不是就不渲染元素
5-常用指令v-show v-show和v-if的能够一样都是条件渲染, 取值为true就显示, 取值为false就不显示
6-常用指令v-for 相当于JS中的for in循环, 可以根据数据多次渲染元素
7-常用指令v-bind 在企业开发中想要给"元素"绑定数据, 我们可以使用{{}}, v-text, v-html
但是如果想给"元素的属性"绑定数据, 就必须使用v-bind
所以v-bind的作用是专门用于给"元素的属性"绑定数据的
8-常用指令- v-bind 绑定类名
9-常用指令-v-on v-on指令专门用于给元素绑定监听事件
下面分享几个实用的 Vue 自定义指令 复制粘贴指令 v-copy 长按指令 v-longpress 输入框防抖指令 v-debounce 禁止表情及特殊字符 v-emoji 图片懒加载 v-LazyLoad 权限校验指令 v-premission 实现页面水印 v-waterMarker 拖拽指令 v-draggable 说一说你对vue生命周期的理解。
1、什么是vue生命周期? 答:Vue 实例从创建到销毁的过程,就是生命周期。从开始创建、初始化数据、编译模板、挂载Dom→渲染、更新→渲染、销毁等一系列过程,称之为 Vue 的生命周期
2、vue生命周期的作用是什么?
答:它的生命周期中有多个事件钩子,让我们在控制整个Vue实例的过程时更容易形成好的逻辑。
3、vue生命周期总共有几个阶段?
答:它可以总共分为8个阶段:创建前/后, 载入前/后,更新前/后,销毁前/销毁后。
4、第一次页面加载会触发哪几个钩子?
答:会触发 下面这几个beforeCreate, created, beforeMount, mounted 。
5、DOM 渲染在 哪个周期中就已经完成?
答:DOM 渲染在 mounted 中就已经完成了。
以上小试牛刀,前端的路还有很长很长需要走啊~
三宝的其他的干货文章:
前端好用到收藏的工具有什么?
没前端项目经验很难找实习吗?
前端什么最难学?
怎样判断面试者是否有扎实的前端基础?(一)
怎样判断面试者是否有扎实的前端基础?(三)
怎样判断面试者是否有扎实的前端基础?(二)
前端自学路线图突围秘籍,超全最新
黑马程序员web前端视频教程从入门到精通Web前端视频教程完整版_Web前端视频教程从入门到精通_黑马程序员
上海龙腾输给深圳大学,陈梦靠排兵布阵侥幸赢球?深圳大学30横扫替补阵容出战的上海龙腾,拿到了开赛以来的第二场胜利,因为对方在排兵布阵上的保守,让一场精彩的比赛少了不少光彩。但无论任何时候,陈梦总是会被架在火上烤的那一位,笔者在
云南有哪些超出常人想象的神秘事件?迷人湖听命在云南怒江高黎贡山有一个神话般的湖泊,人们叫它听命湖,意思是能听懂人的命令,也有人称它为迷人湖。人们靠近湖泊只能轻声细语地说话,如果大声说话,顷刻之间,风云变幻,大雨瓢泼
木阵巨石阵鲜为人知的邻居木陈是位于今英格兰威尔特郡的一座新石器时代建筑,由六个同心圆的木材环组成,可追溯到公元前2500年左右。这个神秘的遗址位于法戈路旁的埃姆斯伯里以北,距巨石阵仅两英里。坐标为51。1
生活有苦乐人生有起落人生无完美,曲折亦风景,想通就是完美趁年轻,走自己想走的路。学会低调,取舍间,必有得失。做自己的决定,然后准备好承担后果。慎言,独立,学会妥协的同时,也要坚持自己的底线。明白付出并不一定有结果。过去的事情可以不忘记,
宠爱张国荣20年,为他终生不娶的男人唐鹤德,依旧和小鲜肉传绯闻文娱析编辑娱析前言2003年4月1日,巨星张国荣从香港文华东方酒店24楼一跃而下,当场身亡。七天之后,面容潦倒消瘦憔悴的唐鹤德在旁人的搀扶下出现在葬礼现场。任谁也瞧不出来,这竟是原
豪取乒超8连胜!国乒25岁王牌让刘国梁欣喜,马龙许昕甘拜下风现在乒超联赛俱乐部之间的团体赛正在进行当中,很多球迷都期待这次乒超联赛当中能有小将打入国家队,和樊振东一起扛起国家队的大旗,毕竟现在男乒的断层让球迷们很担心。原本大家都会以为国乒没
如何将一百万人送上月球火星要将100万人送上月球火星,首要解决的问题不是火箭宇宙飞船等技术。重中之重的问题是能源问题,个人认为,这个问题将会在10年左右解决,10年后,人类将具备将100万人送上月球火星。我
我国成功发射高光谱综合观测卫星12月9日2时31分,我国在太原卫星发射中心用长征二号丁型运载火箭成功发射高光谱综合观测卫星。该星是高分专项天基系统的重要组成部分,是实现高分专项高光谱观测能力的重要标志,将进一步
北交所拟进一步优化上市委重组委委员结构,建立专职化委员队伍12月9日,北交所发布通知,为保障北京证券交易所上市委员会和并购重组委员会规范廉洁高效运行,提高上市委和重组委的工作质量与透明度,北交所修订了北京证券交易所上市委员会和并购重组委员
看!嬉戏在漓江面上的小鸟当你走在漓江边,不时会看到一些珍稀保护的水鸟,如国家二级保护动物白鹭国家三有保护动物(即有益的有重要经济价值有科学研究价值的陆生野生动物)小鸊鷉和白骨顶鸡等在水面上游弋捕食。这些可
秦始皇比我们想象中的还厉害,为什么这么说?头号有新人嬴政,即秦始皇,秦昭襄王与赵姬之子,他是中国现代良好的政治家计谋家改造家,初次完成中国大一统的政治人物,也是中国第一个称天子的君主。自前230年至前221年,前后灭韩赵魏