一、基础类
1、BOM和DOM
使网页文档与浏览器进行交互,DOM主要关注文档结构及内容,BOM侧重与浏览器本身交互
DOM:文档对象模型,是HTML和XML文档的编程接口,由节点组成的层次结构,每个节点对应文档中的一个元素、属性、文本。
DOM操作即:增删改查节点,eg:getElementById\getElementByTagName......
BOM:浏览器对象模型,与浏览器窗口及功能进行交互的接口,提供了一些对象和方法,用于访问和操作浏览器的特性。
比如一些:窗口、导航、历史、位置等对象的操作,eg:获取窗口位置、调整窗口大小、刷新页面、获取当前URL、访问浏览器历史记录前进/后退......
应用场景:
通过DOM操作进行动态页面交互(动态显隐等)、表单处理(获取修改表单元素值)
通过BOM检测浏览器版本、分辨率、实现页面前进/后退导航
2、var、let、const
var:函数级作用域,有声明提升,可重复声明;
let:块级作用域,无声明提升,不可重复声明;
const:块级作用域,无声明提升,不可重复声明,声明时必须赋值,不能重新赋值 (引用类型可改属性);
3、闭包
函数嵌套,内部函数访问外部函数变量。
滥用会造成内存泄漏
作用:私有化变量、缓存数据,模块化
4、promise、原型链
promise:可解决回调地狱,状态有pending、fullfilled、rejected
常用:then、catch、finally、Promise.all、Promise.race
原型链:每个对象有proto,函数有prototype,实例通过proto找原型,形成原型链
5、防抖、节流
防抖:最后一次触发后延迟执行*(常用:搜索框)*
节流:固定时间只执行一次*(常用:滚动、resize)*
6、深、浅拷贝
深拷贝:完全独立*(常用:列表编辑行的表单和外层数据需深拷贝,不深拷贝,修改表单数据,外层列表也同样改了)*
浅拷贝:只拷贝一层,引用类型共享
7、async/await、nextTick
原理:promise语法糖,基于Generator,await后跟Promise,同步写法写异步
8、本地存储
localStorage:永久,5M
sessionStorage:页面关闭消失
cookie:会随请求发送,有过期时间
9、this指向
普通函数:谁调用指向谁
箭头函数:继承外层this,无法改变
构造函数:指向实例
call/apply/bind:可强行改变
10、事件
事件循环:执行栈→微任务全部→宏任务一个
微任务:promise.then
宏任务:setTimeout、script、ajax
二、vue类
1、vue2和3区别
(1)响应式系统
vue2:使用
Object.defineProperty实现响应式,无法检测新增/删除的属性;vue3:改用
Proxy,支持全属性响应式,包括数组和动态添加的属性。(2)API
vue2:依赖选项式 API(
data、methods等);vue3:引入组合式 API(
setup函数),允许逻辑复用和更灵活的代码组织。(3)vue3的性能优化
重写虚拟 DOM,优化 diff 算法,提升渲染性能。
支持多根节点组件(Fragment),无需额外包装标签。
将
beforeDestroy和destroyed更名为beforeUnmount和unmounted。新增setup阶段替代beforeCreate和created。支持 TypeScript 重写,提供更好的类型推断和开发体验。
全局 API(如
Vue.nextTick)改为按需导入。移除了过滤器(
filters),推荐使用计算属性或方法替代。支持多个
v-model绑定移除
$on、$off等事件总线方法,推荐使用mitt等第三方库。
2、生命周期
创建:beforeCreate、created
挂载:beforerMounted、mounted
更新:beforeUpdate、updated
销毁:beforeUnmount、unmounted
组合式API:前缀加on;
beforeCreate和created的功能可以直接在setup中实现,无需显式调用;调试钩子onRenderTracked和onRenderTriggered仅在开发模式下有效。
3、computed、watch
computed:计算属性,有缓存,依赖变化才更新
watch:监听,适合异步/复杂逻辑
4、组件通信
父子:props、emit
兄弟:eventBus、状态管理
跨层:provide/inject、pinia、vuex
跨页:路由
5、v-if、v-show
v-if:真实的销毁、创建
v-show:相当于display:none;(常用:频繁切换
6、vue性能优化方案
v-show替代频繁的v-if
组件懒加载
防抖节流
虚拟列表
图片懒加载
局部加载
三、CSS类
1、水平垂直居中
flex布局(justify-content/alig-items)、定位、grid、margin
2、flex布局
flex-direction:排列方式(row/row-reverse/column...)
flex-wrap:换行方式(nowrap/wrap/wrap-reverse)
flex-flow:排列+换行
justify-content:水平对齐
align-items: 垂直对齐
align-content:常用space-between两端间距相等、space-around两侧间距相等
3、BFC
块级格式化上下文,独立渲染区域
作用:清除浮动,解决margin重叠
4、重排、重绘
重排:布局变化(宽高、位置)
重绘:样式变化(颜色、背景)
注:重排必定触发重绘,重绘不一定重排
四、JS及ES类
五、webpack、vite类
1、webpack和vite区别
vite:启动快,按需编译
webpack:生态全,适合大型项目
六、项目及场景类
1、跨域问题
后端:cors
代理:webpack、vite
nginx:反向代理
JSONP---以前常用
2、HTTP状态码
200--成功
301--永久重定向、302--临时
400--参数错误、401--未登录、403--没权限、404--页面找不到
500--服务器错误
3、路由权限
登录获取角色→过滤路由→动态添加
前端控制、后端返菜单
4、首屏加载慢优化
路由懒加载、图片懒加载/压缩、开启gzip、cdn引入第三方库
5、echarts大屏问题
自适应:resize监听
图片闪烁:加key
性能:数据节流、避免频繁渲染