1. v-if与v-show的区别?
v-if 控制的是元素的加载和销毁 v-show 控制的是元素的display属性 【频繁切换时应使用v-show】
2. vue的生命周期有哪些?
【第一次页面加载时会触发 beforeCreate, created, beforeMount, mounted 这几个钩子】【beforeCreate:加loading事件】【created :结束loading,初始化完成时的事件,异步请求】【mounted:挂载元素,获取到DOM节点,DOM 渲染在 mounted 中就已经完成了】【updated :对数据统一处理的相关函数】【beforeDestroy:停止事件,清除定时器】【nextTick:更新数据后立即操作dom】
-
创建阶段(第一次页面加载执行) 1.beforeCreate 2.created
-
挂载阶段(第一次页面加载执行) 1.beforeMount 2.mounted(页面打开后,发起请求)
-
更新阶段(data 或者 props 修改时触发) 1.beforeUpdate 2.updated
-
销毁阶段 1.beforeDestroy(清除全局数据,比如定时器等) 2.destroyed
3. vue路由传参:
-
query:在地址栏用类似于 get 请求方式去传参,没有限制。
-
params:隐式和显示。显示就是动态路由,隐式是使用 params 传递一个任意的数据,并且该数据在页面刷新后会丢失。
-
router-link路由导航,调用$router.push实现路由传参
4. vue路由守卫都有哪些?
-
全局的前端路由守卫:beforeEach
-
组件内的路由守卫:
-
离开前:beforeRouterLeave
-
更新:beforeRouterUpdate
-
当前路由被激活:beforeEnter
-
5. vuex工作流程:
-
使用:使用
new Vuex.Store({})
配置 store,最后引入到全局的main.js
挂载到根实例上。 -
工作流程: 1.客户端操作事件,dispatch 调用一个 action 2.对应的 action 处理参数,commit 一个 type 类型 3.mutation 接收一个 type 类型触发对应的函数,修改 state 值 4.state 更改后重新渲染
6. react类组件与函数组件的区别:
类组件(状态组件),函数组件(无状态组件,hook 组件)
类组件拥有 react 的全部特性,函数组件没有;类组件的 props 通过继承,函数组件的 props 通过传参;类组件的 state 状态只能通过 setState 改值;函数组件没有生命周期,类组件有;类组件 render 渲染,函数组件 return 渲染
hook:const [val,setVal]=useState();this.setState 是合并,setVal 直接替换
7. redux的工作流程:
-
view在redux中会派发action方法
-
action通过store的dispatch方法会派发给store
-
store接收action,连同之前的state,一起传递给reducer
-
reducer返回新的数据给store
-
store去改变自己的state
8. 什么是虚拟dom: 用 js 通过算法计算出来的 dom 对象,叫虚拟 dom
9. 循环渲染为什么加key?
由于循环渲染遍历出来的是通过js算法得到的虚拟dom,当需要修改其中某个元素的时候,如果不加key,每次变动,都要重新循环计算生成,对性能开销大。key就是每一个虚拟dom的身份证,表示元素的唯一标识,这样在修改的时候,通过key可以只对该元素修改。
10. MySQL与mongodb对比:
-
mysql的适用场景: 1.有事务要求,强一致性要求较高,涉及到金钱的时候 2.逻辑复杂,有较多join的需求
-
mongodb的适用场景: 1.数据结构不确定,可能发生改动的场景 2.事务安全性要求不高,数据扩展要求较高的时候
11. nodejs特性与优势:
-
特性: 1.它是一个Javascript运行环境 2.依赖于Chrome V8引擎进行代码解释 3.异步事件驱动 4.非阻塞I/O 5.轻量、可伸缩,适于实时数据交互应用 6.单进程,单线程(这里指主线程) 7.性能出众
-
优势: 1.Nodejs语法完全是js语法 2.NodeJs超强的高并发能力 3.实现高性能服务器 4.开发周期短、开发成本低、学习成本低
12. 节流与防抖:
-
节流:当持续触发事件时,保证一定时间段内调用一次事件处理函数。(固定时间内执行一次)
-
防抖:当持续触发事件时,一定时间段内没有再触发事件,事件处理函数才会执行一次,如果设定的事件到来之前,又一次触发了事件,就重新开始延时。防抖的含义就是让某个事件期限内,事件处理函数只执行一次。(用户不在触发,停止输入的时候执行)
13. BFC是什么?
-
BFC(Block Formatting Context,块格式化上下文) 是Web页面的可视化CSS渲染的一部分,是块盒子的布局过程发生的区域,也是浮动元素与其他元素交互的区域。
-
特性: 1、属于同一个BFC的两个相邻容器的上下margin会重叠(重点) 2、计算BFC高度时浮动元素也参于计算(重点) 3、BFC的区域不会与浮动容器发生重叠(重点) 4、BFC内的容器在垂直方向依次排列 5、元素的margin-left与其包含块的border-left相接触 6、BFC是独立容器,容器内部元素不会影响容器外部元素
14. async、await和promise的联系?
async、await和promise不存在谁代替谁的说法,因为async、await是寄生于promise Generater的语法糖
15. 重绘与回流:
-
重绘:一些元素需要更新属性,而这些属性只是影响元素外观风格,不会影响布局的。
-
回流:元素的规模尺寸、布局、隐藏等改变而需要重新构建。
-
什么是回流 当render tree中的一部分(或全部)因为元素的规模尺寸,布局,隐藏等改变而需要重新构建,这就称为回流(reflow)。每个页面至少需要一次回流,就是在页面第一次加载的时候,这时候是一定会发生回流的,因为要构建render tree。在回流的时候,浏览器会使渲染树中受到影响的部分失效,并重新构造这部分渲染树,完成回流后,浏览器会重新绘制受影响的部分到屏幕中,该过程称为重绘。
-
什么是重绘 当render tree中的一些元素需要更新属性,而这些属性只是影响元素的外观,风格,而不会影响布局的,比如background-color,则就称为重绘。
-
区别: 回流必将引起重绘,而重绘不一定会引起回流。 比如:只有颜色改变的时候就只会发生重绘而不会引起回流 当页面布局和几何属性改变时就需要回流。 比如:添加或者删除可见的DOM元素,元素位置改变,元素尺寸改变——边距、填充、边框、宽度和高度,内容改变时都需要回流。