背景
今天收到了前端面试通知,面试官问了比基础更难的前端题目,回答的不好,查缺补漏,特此记录。
一、如何优化前端页面?
- 导入的JS文件尽量下载后使用,少引用外部链接
- 能手写的页面效果尽量手写
- 导入外部配置时候按需导入,不要为了一个功能导入整个外部库
- 图片数据懒加载,什么时候需要什么时候加载
- 异步请求
- 使用浏览器插件,分析网页运行情况,并针对性修改
- 为了能尽可能被检索,关键信息写前面,图片的alt属性也不要空
- css放在最上面,javascript放在最下面
- 能使用css就不使用js,js操作dom容易引起页面回流
回流:重新排序,即布局会受到影响
重新排序:用js动态改变了元素的宽或者高,就会影响到其他元素的位置
重绘:当render tree中的一些元素需要更新属性,而这些属性只是影响元素的外观,风格,而不会影响布局的,比如background-color,visibility,outline等
- 预先设置图片的大小,否则首次载入尺寸会从0到有,引起回流
- 避免使用css表达式(如calc())
- 减少dom元素数量和深度
- 预加载:将图片缓存到浏览器
- 减少http请求=>设置http缓存(cookie,sessionStorage,localStorage)
- 避免页面空的href和src
- 使用异步js资源async和defer
二、针对问题一中,下载js文件到服务器上,如何保证服务器中加载速度比外部链接引入更快呢?
很多js外部依赖是由外国人编写,如果从官网的外部链接地址引入,从国外服务器请求数据比从国内服务器请求更慢(自己的猜测~)
相关的知乎讨论链接:www.zhihu.com/question/32…
三、循环迭代的几种方式
- for循环
- while循环
- forEach()=>array.forEach
- 迭代器
四、其他问题
写累了,其他几个都是基础题,就不总结了
相关前端基础题可以看这篇总结: