-
Vue 单页应用与多页应用的区别 单页应用在首屏加载时,加载所有js和css资源,之后的页面加载,只是页面的局部组件切换,不进行整个页面加载,因此切换页面时速度快,用户体验好,不过首屏加载较慢,且不利于seo
多页应用,在每次页面跳转时,都需要加载整个页面,因为性能消耗高,页面切换相对较慢,利于seo -
Vue template 到 render 的过程 因为vue的模板语法,html无法直接进行编译需要将,模板字符串进行转换,转成ast语法树,然后再根据语法树生成render函数
-
Vue data 中某一个属性的值发生改变后,视图会立即同步执行重新渲染吗? 不用,会开启一个任务队列,他会缓冲同一任务队列的数据变更,然后再对视图进行更新,如果一个watcher被操作多次,只会被推入队列一次,避免了对数据进行重复计算,和dom重复渲染。
-
简述 mixin、extends 的覆盖逻辑 mixins 并入目标组件的options,可以有多个mixins
extends 只能有一个且优先级比混入高 -
描述下Vue自定义指令 derectives:{ onaaa:{} }
-
子组件可以直接改变父组件的数据吗? 不可以,因为父组件对子组件是单向数据流,通过props传递数据,子元素不能直接改变props的值, 为了防止子组件意外的修改父组件数据
-
对 React 和 Vue 的理解,它们的异同 同: 组件化,虚拟dom,mvvm,都有状态管理中心,都有自己的构建工具
不同: 虚拟dom原理不同,
vue双向绑定,react 单向数据流。
写法不一样 vue模板字符串,react jsx语法
vue更轻量
-
Vue的优点 简单易学, 组件化, 数据驱动, 渐进式, 运行速度快
-
assets和static的区别 区别就是static属于静态文件,vue进行打包压缩时,不对对其进行处理。都是存储静态文件的
-
delete和Vue.delete删除数组的区别 delete 只是将数组的项变成empty ,并没有删除数组的元素。
另一个会删除数组的元素,数组的长度也会改变 -
vue如何监听对象或者数组某个属性的变化
对象通过$set ,数组通过vue重写的操作数组的方法splice -
什么是 mixin ? mixins混入,当各个组件之间,有重复的逻辑时,可以使用混入将重复逻辑写入,然后组件引用就可以了,
混入写的options 配置选项会并入到目标组件 -
Vue模版编译原理 通过大量的正则表达式,对模板进行转换,将其转换为ast语法树,再根据ast语法树生成render函数
-
对SSR的理解 就是服务端渲染,将渲染html的操作,放到服务端,利于seo,加快首屏加载,不过可用狗子就两个,beforeCreate和created
-
Vue的性能优化有哪些 v-if v-show合理使用
v-for 加key
尽量减少data里的数据,因为data里都会设置响应式依赖,耗内存
路由懒加载,图片懒加载
使用cdn加载第三方资源
静态资源用p-pre跳过编译
长列表数据用Object.rezze 冻结
第三方插件按需引入,
减少重排重绘
使用防抖节流,用keep-alive缓存组件
骨架屏;将静态文件打包压缩;服务端渲染;预渲染 -
对 SPA 单页面的理解,它的优缺点分别是什么? 优点页面切换速度快,对于服务器压力更小,对于开发者,前后端分离职责清晰,用户体验好,缺点首屏加载慢,不利于seo
-
template和jsx的有什么分别? template 语法跟简单,更直观,利于维护
jsx 对于编写高阶组件更友好 -
vue初始化页面闪动问题 出现{{name}}由于代码没有编译完成,可以用v-clock {display:none} 指令,此指令可以让代码编译完成之后再显示到页面上
-
MVVM的优缺点 优点解放了开发者,因为数据驱动,不用手动操作dom ,降低了代码耦合性
缺点:bug不易被调试,因为中间层vm对数据进行了处理,当发生bug时,无法确定是哪出现了问题, 对于大型项目而言,很消耗内存 -
Vue.use的实现原理 通过判断插件是否存在,存在则直接返回
Vuex是什么 一个全局状态管理工具
vuex在各模块在核心流程中的主要功能:
state 存储初始化数据
getter 根据初始化数据进行计算,相当于optios 的computed 计算属性
actions 对mution进行提交。可以异步,不能直接修改state commit
mutation 对state进行修改,不能异步,是修改state唯一途径 dispatch
module 可以拆分vuex成很多模块
Vuex中action和mutation的区别
异步,操作对象不一样
Vuex 和 localStorage 的区别 vuex存于内存,local存于本地文件 vuex能数据响应式,local不能只能存字符串
为什么要用 Vuex
在多层嵌套的组件通信时,进行组件通信十分繁琐,通过vuex可以简化
Vue3.0有什么更新
响应式原理更新 proxy代理,消除了vue2的问题
组件更新 加了三个组件
Vue 3.0 中的 Vue Composition API? 将vue2中分散的逻辑集合在一块,全放在一个函数里,通过retrun返回结果
对虚拟DOM的理解?
原理是通过js对象描述dom对象,通过事件机制,一次性将多个dom操作一次性更新到页面,
从而减少重排重绘,提高渲染性能
虚拟DOM的解析过程
将真实dom转为虚拟dom,同上一次的虚拟dom进行对比,对比出差异部分,再将差异部分渲染到dom树
-
为什么要用虚拟DOM
保证性能下限,跨平台 -
DIFF算法的原理 通过对比两个虚拟dom,判断出不一样的部分,然后将不一样的部分更新到页面
v-for key作用,为何建议用index当key
因为key是用来跟踪虚拟节点的,通过key可以实现就地复用