1、如何清除浮动?
1. 在标签尾部添加空块级标签,设置样式属性为:clear:both;缺点:如果页面浮动布局多,就要增加很多空div,不利于页面的优化。 2. 父级定义伪类after和zoom,.box:after{display:block; clear:both; content:""; visibility:hidden; height:0;} .box{ zoom: 1 } 3. 简单粗暴,父级设置overflow:hidden,缺点是不能和position配合使用 4. 直接给父元素单独设置高度(height);缺点:只适合高度固定的布局,要给出精确的高度,如果高度和父级div不一样时,会产生问题。对于响应式布局会有很大影响。
2、vue组件优化
VUE学习-优化组件 - ~LemonWater - 博客园
3、实现深拷贝的方式
1、使用函数库lodash
2、结构赋值,但是结构赋值只对对象的第一层进行深拷贝,后面的深层次都是浅拷贝
3、JSON.stringify和JSON.parse
用Json.stringify把对象转换成字符串,再用Json.parse把字符串转换成新的对象。
可以转成Json格式的对象才能使用这种方法,如果对象中包含function或RegExp这些就不能用这种方法了。
4、for in 循环遍历。只能深拷贝对象的第一层。
4、 sass与css的区别
1、sass是由buby语言编写的一款css预处理语言,不使用花括号和分号,而css是使用花括号和分号的;
2、sass浏览器不能直接识别解析,需要经过编译器编译,而css可以识别;
3、sass支持嵌套、继承等高级功能,css不支持;
4、sass更加优雅,维护更加方便;
5、sass的文件后缀名是.sass,css文件的后缀名是.css。
CSS主要有以下缺点。
(1) CSS是一门非程序式语言,没有变量、函数、SCOPE(作用域)等概念。
(2) CSS需要书写大量看似没有逻辑的代码,代码冗余度是比较高的。
(3) CSS没有很好的计算能力。
(4) 不方便维护及扩展,不利于复用。
Sass的优势主要包括如下几点。
(1) Sass完全兼容所有版本的CSS。
(2) 特性丰富,Sass拥有比其他任何CSS扩展语言更多的功能和特性。
(3) 技术成熟,功能强大。
(4) 行业认可,越来越多的人使用Sass。
(5) 社区庞大,大多数科技企业和成百上千名开发者为Sass提供支持。
(6) 有无数框架使用Sass构建,如Compass、Bootstrap、Bourbon和Susy。
5、vue双向数据绑定原理
采用“数据劫持”结合“发布者-订阅者”模式的方式,通过“Object.defineProperty()”方法来劫持各个属性的setter,getter,在数据变动时发布消息给订阅者,触发相应的监听回调。
6、防抖与节流
作用:节流和防抖是页面性能优化的一种策略,可以降低回调函数的执行频率,节省计算资源,能有效减少浏览器引擎的损耗,防止出现页面堵塞卡顿现象。
节流:某一高频事件被触发时,确保在每一个特定的时间段内被执行一次。
一般使用场景:
1、
scroll
事件,每隔一秒计算一次位置信息等2、
input
框实时搜索并发送请求展示下拉列表,每隔一秒发送一次请求防抖:某一高频事件不断被触发时,仅在最后一次真正执行事件处理代码。
一般使用场景:
1、登录、发短信等按钮避免用户点击太快,以致于发送了多次请求,需要防抖
2、调整浏览器窗口大小时,resize 次数过于频繁,造成计算过多,此时需要一次到位,就用到了防抖
7、JS单线程双线程的理解
1.Javascript是单线程的。
2.JS的异步Ajax和setInterval/setTimeout函数本质上也是单线程的。
3.Web Worker才是真正的多线程。但是使用上会有一些限制,如无法读取主线程所在网页的 DOM 对象,也无法使用document、window、parent这些对象。