前端知识笔记

69 阅读4分钟
Vue中的mixin(混入)

mixin混入的规则

  • 数据对象进行合并,其中的数据基本类型和组件的数据发生冲突是组件数据优先,组件数据数据覆盖混入对象数据
  • 数据对象如果有引用数据,引用数据类型会进行深层次的合并
  • 混入的生命周期优于组件的生命周期
  • 值为对象的选项键名冲突时,取组件对象的键值对
rem 响应式布局的优缺点和原理

rem响应式布局是一种用于响应式布局的单位,它相对于文档根元素(<html> 标签)的字体大小来确定元素的大小。

优点
  • 相对于根元素的相对单位rem相对于根元素的字体大小,可以轻松实现相对尺寸的调整,而不需要考虑层级嵌套
  • 适应不同屏幕和设备:通过调整根元素的字体大小,可以根据不同屏幕尺寸和分辨率创建适应性强的布局。
  • 维护性和可扩展性:使用rem可以更容易地进行维护和扩展,因为样式的大小不会直接依赖于其他元素的大小。
  • 代码重用:响应式设计通常涉及到不同的布局和元素大小,使用rem可以更容易地重用相同的CSS代码。
缺点
  • 兼容性问题,字体初始化,性能问题
原理

设置根元素字体大小:在CSS中,通过设置根元素(通常是<html>标签)的字体大小为一个基准值,通常是16px(因为大多数浏览器的默认字体大小是16p

rem布局有哪些

弹性盒子布局(Flexbox Layout) :弹性盒子布局使用 "rem" 单位来定义弹性容器和其子元素的布局,以便自动适应可用空间。这对于创建水平和垂直居中的元素非常有用。 栅格布局(Grid Layout) :栅格布局是一种将页面划分为网格的布局方式,通常使用 "rem" 单位来定义栅格列的宽度和间距。这使得在不同设备上创建多列布局变得更容易。 多列布局: "rem" 单位可用于创建多列布局,以适应不同的设备宽度。你可以使用媒体查询来调整列数或列宽度,从而在不同屏幕尺寸下实现不同的布局 响应式导航菜单:使用 "rem" 单位可以创建响应式导航菜单,以适应不同的设备宽度。菜单项的大小和间距可以相对于根元素的字体大小进行设置,以确保在小屏幕上仍然可点击。

js的事件循环机制

EventLoop)事件循环是指不断从任务队列中取出任务,并执行其对应的回调函数的过程。事件循环在JavaScript引擎内部以非常高效的方式运行,在等待异步I/O操作返回数据时,可以将CPU时间释放给其他线程使用

  • js的执行顺序 从上到下一步步执行,如某一行报错,几个停止执行,先执行同步代码,在执行异步代码
  • 事件循环的过程,同步代码调用栈后直接出栈,异步代码放在webapi中,等待事件放入回调队列,微任务要比宏任务要早
  • 微任务和宏任务的区别:**宏任务:**由浏览器规定的(setTimeout,setInterval)**微任务:**由ES6语法规定的(Promise,1. async)
  • 事件循环的整体过程:1. 先清空调用栈(call stack)中的同步代码2. 执行微任务队列中的微任务,3. 尝试DOM渲染,1. 触发事件循环(Event Loop)反复询问回调队列中是否有要执行的语句,有则放入调用栈继续执行。
new map 和new set

new Map() 类似于 对象,属于键值对集合,但是此 键值 与 对象的键值 有所不同

  • set设置属性, 为 map 添加数据,返回 map 集合
  • get获取对应的 key 值, 第一个括号为 key 值, 如果 value 为一个函数,第二个括号为传参数据
  • size ()Number返回 map 成员的 length
  • delete()Boolean,成功:true, 失败:false, 删除指定的 key 值
  • clear()清空 map 中的数据
  • keys()遍历 map 中的 key
  • values()遍历 map 中的 value

new set,一般都是用来数组去重

  • add()设置属性, 为 set 添加数据,返回 set 集合
  • has ()** Boolean**,存在:true, 不存在:false 判断 set 成员中是否存在这个值