后续的总结(一)

简介: 后续的总结

1. css 怎么开启硬件加速(GPU 加速) ok


浏览器在处理下面的 css 的时候,会使用 GPU 渲染


1.transform( 当3D变换的样式出现时,会使用 GPU 加速)


2.opacity     3.filter    4.will-change


当使用这些css的时候浏览器会开启硬件加速的哈~


常用设计模式有哪些并举例使用场景


1.工厂模式 - 传入参数即可创建实例


2.单例模式 - 整个程序有且仅有一个实例


vuex 和 vue-router 的插件注册方法 install 判断如果系统存在实例就直接返回掉


3.发布-订阅模式 (vue 事件机制)


4.观察者模式 (响应式数据原理)


5.装饰模式: (@装饰器的用法)


6.策略模式:指对象有某个行为,但是在不同的场景中,该行为有不同的实现方案-比如选项的合并策略


2. 什么是缓存?


所谓浏览器缓存其实就是指在本地使用的计算机中开辟一个[内存区],


同时也开辟一个[硬盘区]作为数据[传输的缓冲区],


然后用这个【缓冲区】来【暂时】保存用户以前访问过的信息。


在读取缓存的时候,


1==>先查找内存,如果内存中存在,从内存中加载。


2==>如果内存中未查找到,选择硬盘获取,如果硬盘中有,从硬盘中加载;


3==>如果硬盘中未查找到,那就进行网络请求;


加载到的资源缓存到【硬盘】和【内存】;


如何设置缓存


在响应头中设置[Response Headers] cache-control: max-age=31536000


它的单位是s, 31536000s=一年。


如果我们不希望某一个文件缓存,我们可以将 cache-control:no-cache


当我们下一次在去请求这个网站的时候;


我们的浏览器回去检查max-age有没有过期


如果max-age过期了,就会重新去请求


如果max-age没有过期,则不会去重新请求,而是直接去使用本地之前的缓存


有的小伙伴会说前端怎么设置缓存???我想知道!!


真相很残酷,其实缓存并不是前端设置的。


而是后端去设置后否缓存,以及缓存的时间


cache  【kæ ʃ】 隐藏物


协商缓存:是服务端的一种缓存策略


当我们第二次发送求的时候,会告诉服务器请求资源以及[资源标识]


在前端性能优化的方式中,最重要的当然是缓存了,


使用好了缓存,对项目有很大的帮助。


缓存的运用:


比如我们访问网页时,使用网页后退功能,


会发现加载的非常快,体验感很好,这就是缓存的力量。


3. 缓存有那些好处


1. 缓解服务器压力,不用每次都去请求某些数据了。


2.提升性能,打开本地资源肯定会比请求服务器来的快。


3.减少带宽消耗,当我们使用缓存时,只会产生很小的网络消耗,


至于为什么打开本地资源也会产生网络消耗,下面会有说明。


4. web的缓存类型


Web缓存种类: 数据库缓存,CDN缓存,代理服务器缓存,浏览器缓存。


浏览器缓存位置一般分为四类:


Service Worker-->Memory Cache-->Disk Cache-->Push Cache。


强缓存


强缓存是当我们访问URL的时候,不会向服务器发送请求,


直接从缓存中读取资源,但是会返回200的状态码。


什么是https


HTTPS 是在 HTTP 的基础上,利用 SSL/TLS 加密数据包。


它的作用是:1.对数据加密 2.验证网站服务器身份


https 加密使用了,使用了对称加密,和非对称加密的混合方式


304 是什么意思 一般什么场景出现 ,命中强缓存返回什么状态码


协商缓存命中返回 304;


这种方式使用到了 headers 请求头里的两个字段,Last-Modified & If-Modified-Since。


服务器通过响应头 Last-Modified 告知浏览器,资源最后被修改的时间:


Last-Modified: Thu, 20 Jun 2019 15:58:05 GMT


当再次请求该资源时,


浏览器需要再次向服务器确认,资源是否过期,


其中的凭证就是请求头 If-Modified-Since 字段,值


为上次请求中响应头 Last-Modified 字段的值:


浏览器在发送请求的时候服务器会检查请求头 request header 里面的 If-modified-Since,


如果最后修改时间相同则返回 304,


否则给返回头(response header)添加 last-Modified 并且返回数据(response body)。


另外,浏览器在发送请求的时候服务器会检查请求头(request header)


里面的 if-none-match 的值与当前文件的内容通过 hash 算法


(例如 nodejs: cryto.createHash('sha1'))


生成的内容摘要字符对比,相同则直接返回 304,


否则给返回头(response header)添加 etag 属性为当前的内容摘要字符,并且返回内容。


请求头last-modified的日期与响应头的last-modified一致


请求头if-none-match的hash与响应头的etag一致


这两种情况会返回Status Code: 304


babel是什么,原理了解吗?


Babel 是一个 JavaScript 编译器。


他把最新版的 javascript 编译成当下可以执行的版本。


利用 babel 就可以让我们在当前的项目中,


随意的使用这些新最新的 es6,甚至 es7 的语法。


Babel 的三个主要处理步骤分别是:  


解析(parse),转换(transform),生成(generate)。


解析:


将代码解析成抽象语法树(AST),


每个js引擎都有自己的(AST)解析器,


在解析过程中有两个阶段:(词法分析)和(语法分析),


词法分析阶段把字符串形式的代码转换为令牌(tokens)流


而语法分析阶段则会把一个令牌流转换成 AST 的形式,同时这个阶段会把令牌中的信息转换成 AST 的表述结构。


转换


在这个阶段,Babel 接受得到 AST 并通过对其进行深度优先遍历,


在此过程中对节点进行添加、更新及移除操作。


生成


将经过转换的 AST通过 babel-generator 再转换成 js 代码,过程就是深度优先遍历整个 AST,然后构建可以表示转换后代码的字符串。


RAF 和 RIC 是什么


13 RAF 和 RIC 是什么


requestAnimationFrame: 告诉浏览器在下次重绘之前执行传入的回调函数


(通常是操纵 dom,更新动画的函数);


由于是每帧执行一次,那结果就是每秒的执行次数与浏览器屏幕刷新次数一样,通常是每秒 60 次。


requestIdleCallback:: 会在浏览器空闲时间执行回调,


也就是允许开发人员在主事件循环中执行低优先级任务,


而不影响一些延迟关键事件。如果有多个回调,


会按照先进先出原则执行,但是当传入了 timeout,


为了避免超时,有可能会打乱这个顺序。


https://juejin.cn/post/6844903848981577735


写出下面的答案


Function.prototype.__proto__; //Object.prototype
Object.__proto__; //Function.prototype
是不是觉得很奇怪
Object instanceof Function; //true 
Function instanceof Object; //true
Function.prototype === Function.__proto__; //true
Object.prototype.__proto__; //null


tree shaking 是什么,原理是什么


Tree shaking 是一种通过清除多余代码方式,来优化项目打包体积的技术。


tree shaking 的原理是什么?


ES6 Module 引入[进行了静态分析],在编译的时候,正确判断到底加载了那些模块。


静态分析程序流,判断那些模块和变量未被使用或者引用,进而删除对应代码


common.js 和 es6 中模块引入的区别?


CommonJS 模块输出的是一个值的拷贝,ES6 模块输出的是值的引用。


CommonJS 模块是运行时加载,ES6 模块是编译时输出接口(静态编译)。


CommonJs 是单个值导出,ES6 Module 可以导出多个


CommonJs 的 this 是当前模块,ES6 Module 的 this 是 undefined

相关文章
|
1月前
|
存储 Oracle 关系型数据库
Dataphin常见问题之想要周期执行任务如何解决
Dataphin是阿里云提供的一站式数据处理服务,旨在帮助企业构建一体化的智能数据处理平台。Dataphin整合了数据建模、数据处理、数据开发、数据服务等多个功能,支持企业更高效地进行数据治理和分析。
|
2月前
|
传感器 自然语言处理 自动驾驶
自动执行与反馈
自动执行与反馈
18 1
|
3月前
|
编解码
亚丁号自动阅读第一次更新
亚丁号自动阅读第一次更新
17 0
|
6月前
|
Java 数据库 开发者
自动配置要点解读
自动配置要点解读
|
7月前
如何进行需求评审后续跟踪和更新?附模板
如何进行需求评审后续跟踪和更新?附模板
|
8月前
uniapp bug记录(后续更新)
uniapp bug记录(后续更新)
72 0
|
前端开发
前端学习案例5-执行机制1
前端学习案例5-执行机制1
62 0
前端学习案例5-执行机制1
|
前端开发
前端学习案例6-执行机制2
前端学习案例6-执行机制2
43 0
前端学习案例6-执行机制2
|
分布式计算 大数据 Spark
阶段练习_需求介绍和明确步骤 | 学习笔记
快速学习 阶段练习_需求介绍和明确步骤
74 0
阶段练习_需求介绍和明确步骤 | 学习笔记
|
前端开发
前端工作小结76-整理订单的重置逻辑
前端工作小结76-整理订单的重置逻辑
58 0
前端工作小结76-整理订单的重置逻辑