美团面经总结

1.文件上传样式处理

  • 使用label标签点击,触发file类型的input,input可直接display: none

2.隐藏元素的方法

  • display: none不会渲染这个元素
  • visibility: hidden隐藏元素,但是元素还是占位置,元素不可触发点击事件
  • opacity: 0;设置元素的不透明度为0,元素还是可以触发点击事件的

3.域名发散和域名收归

  • 域名发散
    为了利用现代浏览器的多线程并发下载能力,由于浏览器的限制,每个浏览器允许对每个域名的连接数一般是有上限的,每个域名的最大连接数是6个,为了提高最大并行度
  • 域名收归
    在移动端的http请求中DNS解析比较耗时,尽量减少域名的个数

4.浏览器重绘与回流

  • html页面呈现流程

1.浏览器将HTML代码解析成一个DOM树,DOM树种包含所有HTML标签,包括display:none和js动态添加的元素等

2.浏览器将css解析成css树,解析过程中会去掉浏览器不能识别的样式,比如浏览器前缀

3.DOM树和css树组合后构建渲染树,渲染树能识别样式,同时渲染树不包含隐藏的节点

4.渲染树构建完毕后,浏览器就根据渲染树来绘制页面

  • 回流
    当渲染树种的一部分因为元素的尺寸,布局,隐藏等改变时需要重新构建,就称为回流
    回流时,浏览器会使得渲染树种受到影响的部分失效,并重新构造这部分渲染树,完成回流后,浏览器会重新绘制受影响的部分到屏幕中,该过程称为重绘

    • 回流是指的重新构造渲染树,而重绘是指的浏览器重新绘制的过程
    • 回流必将引起重绘,而重绘不一定会引起回流
      回流发生的条件,页面布局和几何尺寸改变时就需要回流
    • 添加和删除DOM节点
    • 元素位置改变
    • 元素尺寸改变——边框,填充,边框,宽度和高度
    • 元素内容改变
    • 页面渲染初始化
    • 浏览器窗口尺寸改变——resize事件发生时
  • 优化
    浏览器本身会维护一个队列,将所有引起回流,重绘的操作放入这个队列,等队列中的操作到了一定的数量或者到了一定的时间间隔,浏览器就会执行队列中的批处理,这样就会让多次回流和重绘变成一次回流重绘
    但是当我们查询节点的style属性,如调用offsetWidth,就会让浏览器执行队列中的任务

    • 应该减少对渲染树的多次操作,尽量通过改变元素的类来实现多个样式的改变
    • 将需要多次重排的元素,position设置为absolute或fixed,这样元素就脱离了文档流,它的变化就不会影响到其他元素
    • 减少DOM操作的次数
    • 对隐藏元素的操作不会引发其他元素的重排,如果对一个元素进行复杂操作时,可以先隐藏它,操作完成后再显示,这样只有在隐藏和显示时触发2次重排
    • 将经常要用到的那些引起浏览器重排的属性值,缓存到变量

5.requestAnimationFrame

  • 不需要设置时间间隔
  • 大多数显示器刷新频率是60Hz,每秒钟重绘60次,即使重绘频率超过显示器的重绘频率用户体验也不会提升,最平滑的动画最佳循环间隔为16.6ms
  • 浏览器在窗口处于非激活的状态下,requestAnimationFrame是不会执行
  • requestAnimationFrame使用系统时间间隔,保持最佳的绘制效率,不会因为时间间隔过短造成过度绘制,也不会因为时间间隔过长,使用动画卡顿不流畅

6.base64编码

  • 所有二进制文件,都可以转化为可打印文本编码,一般会比原图大一些,不能缓存,除非放到js和css中
  • 能够对文本进行简单的加密
  • 将大图片放如html中,会使得体积明显增加,明显影响首屏加载
    如果用外链图片,图片可以在页面渲染完成后继续加载,不会造成阻塞
  • 使用webpack中的url-loader 可以自动根据文件大小决定要不要做成内敛base64

7.HTTPS的原理

  • 访问HTTPS网站,网站将证书给你
  • 验证包含公钥的证书,然后生成一个随机密码串,并用公钥加密的这个密码,然后发送给服务端
  • 服务端用私钥解密发送过来的数据,会得到随机生成的密码,并把网页内容全部用密码加密起来,并发送给你
  • 浏览器用密码对称解密服务端返回的数据,得到你可读的内容
  • 之后发出的请求数据,都是用密码进行加密
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,425评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,058评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,186评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,848评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,249评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,554评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,830评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,536评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,239评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,505评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,004评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,346评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,999评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,060评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,821评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,574评论 2 271
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,480评论 2 267

推荐阅读更多精彩内容

  • 简介浏览器可以被认为是使用最广泛的软件,本文将介绍浏览器的工 作原理,我们将看到,从你在地址栏输入google.c...
    听风阁阅读 3,200评论 0 7
  • 转载说明 一、介绍 浏览器可以被认为是使用最广泛的软件,本文将介绍浏览器的工作原理,我们将看到,从你在地址栏输入g...
    17碎那年阅读 2,375评论 0 22
  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,629评论 1 92
  • 作为一个前端开发,有必要了解从我们在浏览器地址栏输入网址到看到页面这期间浏览器是如何进行工作的,进而了解如何更好的...
    李奕锦liyijin阅读 525评论 0 0
  • 哎,我最终还是离开了,不是吗? 十年的兄弟感情,终究会说一会儿再见的,毕竟是,合久必分,分久必合吗! 在篮球场上是...
    眼镜先森阅读 164评论 1 4