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 成员中是否存在这个值