以下为《前端面试题内容》的无排版文字预览,完整内容请下载
vue和react的区别
A、数据是不是可变的:react整体是函数式的思想,把组件设计成纯组件,状态和逻辑通过参数传入,所以在react中,是单向数据流,推崇结合immutable来实现数据不可变;而vue是基于可变数据的,支持双向绑定。
B、通过js来操作一切,还是用各自的处理方式:react的思路是all in js,通过js来生成html,所以设计了jsx;vue是把html,css,js组合到一起,用各自的处理方式。
C、类式的组件写法,还是声明式的写法:react组件的扩展一般是通过高阶组件,而vue组件会使用mixin。
D、什么功能内置,什么交给社区去做:vue追求的是开发的简单,而react更在乎方式是否正确。
react的虚拟dom,说说实现的过程
用 JavaScript 对象结构表示 DOM 树的结构;然后用这个树构建一个真正的 DOM 树,插到文档当中,当状态变更的时候,重新构造一棵新的对象树。然后用新的树和旧的树进行比较,记录两棵树差异,把所记录的差异应用到真正的 DOM 树上,视图就更新了。
如果只是vue,则说说vue的双向数据绑定的实现原理
vue 双向数据绑定是通过 数据劫持 结合 发布订阅模式的方式来实现的, 也就是说数据和视图同步,数据发生变化,视图跟着变化,视图变化,数据也随之发生改变;
es6的相关语法及特性:如promise,箭头函数,generator,await,async,等。
A、Promise:对象用来进行延迟(deferred) 和异步(asynchronous ) 计算,将异步操作队列化;有三个状态pending[待定]初始状态、fulfilled[实现]操作成功、rejected[被否决]操作失败。
B、引入箭头函数有两个方面的作用:简化函数和不需要绑定 this。
C、generator标准的哥们借鉴了Python的generator的概念和语法,有*符号的
5.redux的实现
Redux是将整个应用状态存储到一个地方上称为store,里面保存着一个状态树store tree,组件可以派发(dispatch)行为(action)给store,而不是直接通知其他组件,组件内部通过订阅store中的状态state来刷新自己的视图。
6.react的高阶组件和高阶函数
A、高阶组件本质上是一个函数,只是这种组件(函数)接收一个组件,返回一个新的组件
B、高阶函数:接受的参数是函数或者返回值是函数
7.react的hooks,具体有useState,useEffect,useContext等的实现
useState()用于为函数组件引入状态(state)
如果需要在组件之间共享状态,可以使用useContext()。
C、useEffect()用来引入具有副作用的操作,最常见的就是向服务器请求数据。
8.react的生命周期,如果用函数式变成如何实现生命周期
初始化阶段:
getDefaultProps:获取实例的默认属性
getInitialState:获取每个实例的初始化状态
componentWillMount:组件即将被装载、渲染到页面上
render:组件在这里生成虚拟的 DOM 节点
componentDidMount:组件真正在被装载之后
运行中状态:
componentWillReceiveProps:组件将要接收到属性的时候调用
shouldComponentUpdate:组件接受到新属性或者新状态的时候(可以返回 false,接收数据后不更新,阻止 re 内容过长,仅展示头部和尾部部分文字预览,全文请查看图片预览。 可能会有异步方法,await后面跟一个表达式
async方法执行时,遇到await会立即执行表达式,然后把表达式后面的代码放到微任务队列里,让出执行栈让同步代码先执行
29、如何使用Set去重
let arr = [12,43,23,43,68,12];
let item = [...new Set(arr)];
console.log(item); //[12, 43, 23, 68]
30、vue的生命周期
beforeCreate
created
beforeMount
mounted
beforeUpdate
updated
beforeDestroy
destroyed
[文章尾部最后300字内容到此结束,中间部分内容请查看底下的图片预览]请点击下方选择您需要的文档下载。
以上为《前端面试题内容》的无排版文字预览,完整内容请下载
前端面试题内容由用户“jianxun_yang80”分享发布,转载请注明出处