前端面试题集

适配问题

react相关问题

网络问题

性能问题

兼容性问题

工程化问题

安全问题

移动端适配问题。

createElement 和 cloneElement 有什么区别?

传入的第一个参数不同

React.createElement():JSX 语法就是用 React.createElement()来构建 React 元素的。

它接受三个参数,第一个参数可以是一个标签名。如 div、span,或者 React 组件。第二个参数为传入的属性。第三个以及之后的参数,皆作为组件的子组件。

1
React.createElement(type, [props], [...children]);

React.cloneElement()与 React.createElement()相似,不同的是它传入的第一个参数是一个 React 元素,而不是标签名或组件。新添加的属性会并入原有的属性,传入到返回的新元素中,而旧的子元素将被替换。将保留原始元素的键和引用。

1
React.cloneElement(element, [props], [...children]);

前端面试题集

JavaScript 基础

Javascript中apply和call的区别

参数传递方式不同:call 方法接受的是一个参数列表,而 apply 方法接受的是一个参数数组。
适用场景不同:当参数数量固定时,通常使用 call;当参数数量不固定时,使用 apply 更为方便。

call 和 apply 都用于改变函数执行时的 this 指向。

call 接受参数列表,apply 接受参数数组。

根据参数的数量和形式选择合适的调用方式。

掌握 call 和 apply 的使用,能够让你在 JavaScript 中更加灵活地控制函数的执行上下文,提升代码的复用性和可维护性。

1. 解释 JavaScript 中的原型和原型链

答案
JavaScript 中的每个对象都有一个原型(prototype),原型也是一个对象,对象可以从原型继承属性和方法。

  • 原型:每个函数都有一个 prototype 属性,指向一个对象,这个对象就是该函数的实例的原型
  • 原型链:当访问一个对象的属性时,如果对象本身没有这个属性,JavaScript 会沿着原型链向上查找,直到找到该属性或到达原型链的末端(null

react重点

1、react 父组件怎么调用子组件的方法

‌函数组件使用 forwardRef+useImperativeHandle‌:子组件通过useImperativeHandle暴露方法,父组件通过ref调用

Vue 2 源码解读

目录结构

Vue 2的源码采用典型的模块化结构,主要包含以下核心模块:

  • core: 核心代码,包含响应式系统、虚拟DOM、组件系统等
  • platforms: 平台特定代码,包括Web和Weex
  • compiler: 模板编译器,将模板转换为渲染函数
  • server: 服务端渲染相关代码
  • sfc: 单文件组件(.vue文件)解析器
  • shared: 共享工具函数

一、响应式系统

Vue 2的响应式系统是整个框架的核心,它基于Object.defineProperty实现数据劫持和发布订阅模式。

1.1 数据响应式原理

React自定义Hook让逻辑复用

你是不是经常在多个组件里写同样的逻辑?比如监听窗口大小变化,或者跟踪鼠标位置?每次都要写一遍useEffect添加监听,还要在卸载时清理事件… 这样的重复代码不仅浪费时间,还容易出错。今天我要分享的React自定义Hook,就是解决这个痛点的神器!它能让你像搭积木一样封装和复用组件逻辑,代码整洁度直接提升一个level!

render方法的具体含义

Vue 项目的main.js 中: render: h => h(App) 具体含义解释

请解释:render: h => h(App) 这段话的意思?

1
2
3
4
5
6
7
# main.js
new Vue({
el: '#app',
router: router,
store: store,
render: h => h(App)
})

vue3组件库

环境搭建

目前流行的组件库搭建方式都是使用monorepo的方式,好处很多,可以在一个代码仓库中管理多个项目,可以达到项目之间的资源共享。这里也是使用这种方式。

以 pnpm 构建 monorepo

首先全局安装pnpm

vue2重点

Vue2响应式系统的工作原理

Vue2响应式系统的核心实现机制
Vue2的响应式系统基于数据劫持与发布-订阅模式,通过Object.defineProperty() API拦截数据访问与修改,并结合依赖收集机制实现视图自动更新。其核心目标是建立数据与视图之间的联动关系,当数据变化时触发依赖组件的重新渲染。

当前网速较慢或者你使用的浏览器不支持博客特定功能,请尝试刷新或换用Chrome、Firefox等现代浏览器