初始文章(1)

110 阅读3分钟

1.什么是闭包

以访问另一个函数作用域变量的函数,就是闭包优点可以延长变量的生命周期,但是有内存泄露的风险 常用的闭包有节流,防抖

2.浏览器缓存及其缓存位置

强缓存,通过Cache-Control和expoise两个字段,如果一段时间内再次发送请求的话就会使用缓存

     协商缓存:浏览器在请求头添加Tag字段,服务器根据Tag判断是否使用缓存

     Tag:有Last-Modified和Etag两个字段

     浏览器发送请求后服务器会在响应头添加Last-modified这个字段,浏览器再次请求的话会在请求头添加IF-modified-since,服务器会对比这两个字段,如果IF-modified-since的值小于Last-modified的值,那么使用缓存,否则发送请求

     ETag:浏览器根据文本内容生成一个的标识,当内容发生变化时Etag就会变换,

     Etag的精度要高于last-modifid,last-modifid的单位是秒

3.从地址栏输入url点击回车

首先先从url中解析出 域名,协议,端口号 然后判断是否使用缓存,接着进行DNS解析(因为浏览器无法根据域名直接访问服务器DNS解析后会得到IP),接着建立TCP连接确定双方都有接受和发送数据的能力,浏览器发送http请求,服务器发送响应体,最后将内容渲染到页面

4.浏览器如何进行渲染

     渲染进程将html解析成Dom数,渲染引擎将css解析成stylesheets,计算Dom数节点样式,接着生成布局树,对布局树分层生成分层树,根据图层生成绘制列表,交给合成线程,合成线程在将图层生成图块,格栅化图块生成位图,最后将位图交给浏览器进程显示到显示器上

5.进程和线程

1.进程,是并发执行的程序在执行过程中分配和管理资源的基本单位,是一个动态概念,竞争计算机系统资源的基本单位。

2.线程,是进程的一部分,一个没有线程的进程可以被看作是单线程的。线程有时又被称为轻权进程或轻量级进程,也是 CPU 调度的一个基本单位。

一个程序至少有一个进程,一个进程至少有一个线程,资源分配给进程,同一个进程下所有线程共享该进程的资源

6.flex布局

自适应布局,用起来方便,但是兼容性差一些,PC端应用比较多,他是通过给父元素设置flex属性来控制子盒子完成布局的,有主轴和交叉轴(主轴是水平方向的从左向右,交叉轴是垂直方向的)可以通过flex-direction来设置,flex常用的还有

justify-content: 设置子元素在主轴方向上的对齐方式

align-items: 设置子元素在交叉轴方向上的对齐方式align-content设置子容器在交叉轴的排列方式

flex-wrap: 设置子容器的换行方式

flex-flow