客户端|金三银四难道可以不知道这些?( 五 )


负载均衡也是nginx最常用的一个功能 , 如果请求过多的时候 , 将不同的请求发送不同的服务器 , 避免因为服务器处理请求过慢 , 导致的响应数据的问题 。
知道CDN吗?说一下CDNCDN是构建在现有网络基础之上的智能虚拟网络 , 依靠部署在各地的边缘服务器 , 使用户就近获取所需内容 , 降低网络拥塞 , 提高用户访问响应速度和命中率 。
浏览器输入一个url会发生什么

  • DNS解析 , 将域名转化为IP地址
  • 进行三次握手 , 客户端与服务端建立连接 。
  • 发送Http请求
  • 四次挥手 ,获取数据
  • 解析HTML
  • 渲染页面
  • 断开连接
React 部分React是什么 , 为什么要使用ReactReact 是JS的一个UI编程库 , 为开发者提供了一个函数式编程的方式 , 让开发者使用起来更舒服 。 React为浏览器的性能提供了一个下限 , 并且一次学习随处可用
React 在国外的使用率偏高 , 在国内一些大型企业级应用也会采用React , 国内一些中小型的企业级应用则会采用Vue 。
可以说一下React的事件机制吗React的事件机制是一个合成事件 。 对于浏览器来说 , 我们在JS代码中 , 每设置一个监听事件 , 浏览器都会分出一个浏览器对象进行处理 , 如果监听事件太多 , 浏览器则会分出更多的浏览器对象进行监听 , 对浏览器的性能其实会造成影响 , React则是将这个事件通过事件委托的方式 , 全部挂载到父元素身上 , 通过父元素去触发事件 。 这就是为什么 , 我们使用输入组件 , 或者点击组件 , 要通过e.target去拿到触发源的原因
为什么要使用VDOM , VDOM的性能一定比DOM好吗?这个其实要区分场景 , 例如说我们只是更改一个标签的本文 , 我们使用VDOM操作其实性能是不比直接操作DOM好的 , 因为中间多了一层了VDOM的转化 , 但是为什么我们要使用VDOM , 因为VDOM将浏览器的运算都集中到了JS中 , 浏览器进行计算是比较慢的 。 其实也就是VDOM为我们提供了一个性能的下限
说一下常用的HookuseState , useEffect , useMemo useRefuseMemo useCallback
useEffect 是如何模拟生命周期的
  • 第二个参数传空数组  componentDidMount
  • 第二个参数传递依赖项 componentDidUpdata
  • 在useEffect return一个方法 componentWillUnmount
说一下React Hook 你工作中遇到的坑主要就是通过useState更改值 , 但是拿不到最新的值的问题 , 通常使用useRef进行解决
你知道JSX吗?JSX其实就是我们现在再写React 文件时 , 在页面上写的HTML结构 , 其实这种结构 , 最后都会通过React.createElement方法转化为Babel结构 , 第一个参数是标签的类别 , 第二个参数是组件的Props , 第三个参数是里面的子节点
读过React 源码吗 , 可以说下React的更新极致吗juejin.cn/post/707337…
说一下React在循环数组的时候建议不要用index作为key 。数组发生改变 , 索引也就会发生改变 , 所以索引作为key , React内部进行Diff比对的时候 , 复杂度会升高 。 为什么React建议使用唯一值的key呢 , React diff 会通过这些被标记的元素 , 进行一系列的操作 , 从而保证不必要元素的渲染 , 提高性能 。 key 需要保证在同级元素中具有唯一性
虚拟DOM 相对于真实DOM的 优势对于一些场景来说 , 虚拟DOM的效率不一定会比真实DOM高 , 比如修改一个按钮的文案 , 或者是初次渲染 , 因为React 多了虚拟DOM这一层级的操作 , 效率也会比真实DOM慢 , 但是虚拟DOM是提供了性能的下限 , 保证了页面更新渲染时的性能 。 虚拟DOM的优势其实在于 , 提供了一种函数式UI变成方式的同时 , 还能保证不错的效率