前端(知识点总结)


浏览器

屏幕刷新频率

屏幕每秒出现图像的次数。(普通笔记本为60Hz)

动画原理

计算机每16.7ms刷新一次,由于人眼的视觉停留,所以看起来是流畅的移动

实现动画的方式

  1. HTML5:Canvas动画 / requestAnimationFrame API
  2. CSS3:transition / animation;
  3. JS:setTimeout / setInterval
  4. SVG(可伸缩矢量图形)

requestAnimationFrame(rAF)请求动画帧

优势:
由系统决定回调函数的执行时机。60Hz的刷新频率,那么每次刷新的间隔中会执行一次回调函数,不会像setTimeout那样容易卡顿、抖动、引起丢帧

优点:CPU节能、函数节流
缺点:容易考虑优雅降级

clientHeight,scrollHeight,offsetHeight,以及scrollTop, offsetTop,clientTop

LocalStorageSessionStorageCookie的区别:

LocalStorage SessionStorage Cookie
存储位置 客户端
存储类型 字符串
增删改查 set、get、remove
存储大小 5M 4K
有效期 永久:需手动清除 仅当前会话有效 在设置的有效期后过期
与服务端通信 × 携带在HTTP请求头信息中
页面共享 不同顶级窗口不共享 同域名不同端口可共享

Cookie和Session

Cookie Session
是否安全 ×
储存限制 ≤4K /
位置 客户端 服务器端
保存的数据类型 字符串 任意类型
语法 if(request.Cookies["admin"]!=null) if(session["admin"]!=null)
  1. Cookie 在客户端,Session 在服务器端。
  2. Cookie的安全性一般,他人可通过分析存放在本地的Cookie并进行Cookie欺骗。在安全性第一的前提下,选择Session更优。重要交互信息比如权限等就要放在Session中,一般的信息记录放Cookie就好了。
  3. 单个Cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个Cookie。
  4. Session 可以放在文件、数据库或内存中,比如在使用Node时将Session保存在redis中。由于一定时间内它是保存在服务器上的,当访问增多时,会较大地占用服务器的性能。考虑到减轻服务器性能方面,应当适时使用Cookie。
  5. Session 的运行依赖Session ID,而 Session ID 是存在 Cookie 中的,也就是说,如果浏览器禁用了 Cookie,Session 也会失效(但是可以通过其它方式实现,比如在 url 中传递 Session ID)。
  6. 用户验证这种场合一般会用 Session。因此,维持一个会话的核心就是客户端的唯一标识,即Session ID。

web worker

运行在后台的 JavaScript,独立于其他脚本,不会影响页面的性能

Ajax

创建交互式、快速动态网页应用的网页开发技术,无需重新加载整个网页的情况下,能够更新部分网页的技术

优点:减轻服务器的负担,按需取数据,最大程度的减少冗余请求,局部刷新页面,减少用户心理和实际的等待时间,带来更好的用户体验,基于xml标准化,并被广泛支持,不需安装插件等,进一步促进页面和数据的分离

缺点:因为大量的使用了JSAJAX引擎,这些取决于浏览器的支持.在编写的时候考虑对浏览器的兼容性。

Web安全色

URL到整个页面加载完毕显示在屏幕上的整个流程

graph TD 输入网址 --> DNS解析-->建立TCP连接-->客户端发送HTTP请求-->服务器处理并响应请求-->客户端解析资源渲染布局

页面渲染过程

解析HTML、构建DOM树、DOM树与CSS样式进行附着构造呈现树、布局、绘制

graph TD 根据html代码生成DOM树-->根据css代码生成CSSOM-->将DOM树和CSSOM整合形成Render树-->根据render树渲染页面-->遇到script标签则暂停渲染-->优先加载并执行js代码-->直至渲染完成Render树

页面展示过程

graph TD Javascript:负责业务交互逻辑-->Style:根据CSS对每个DOM元素匹配样式-->Layout:计算DOM元素显示在屏幕的位置大小-->Paint:由多个渲染层完成DOM元素的可视效果-->Composite:每层绘制完成后将所有的层依序合并为一个图层显示到屏幕

框架

单向数据流和双向数据流

单向数据流 双向数据流
架构 MVC MVVM
框架 React Vue、Angular
例子 Vue 中 v-bind 、父传子的 props Vue 中 v-model
特点 所有状态的改变可记录、可跟踪,源头易追溯;
一旦数据变化,就去更新页面(data-页面),但是没有(页面-data);
如果用户在页面上做了变动,那么就手动收集起来(双向是自动),合并到原有的数据中;
所有数据只有一份,组件数据只有唯一的入口和出口,使得程序更直观更容易理解,有利于应用的可维护性
无论数据改变,或是用户操作,都能带来互相的变动,并且自动更新

VueReact

架构

RESTful

一种网络应用程序的设计风格和开发方式,基于HTTP,可以使用XML格式定义或JSON格式定义(用 URL 定位资源,用 HTTP 描述操作)

MVC和MVVM

MVC:在Controller里面把Model的数据赋值给View
image.png

image.png

性能优化

页面加载及渲染优化

  1. HTML:文档结构层次尽量少(最好不深于六层)
  2. CSS:样式结构层次尽量简单;少量首屏样式内联放在标签内;动画尽量使用在绝对定位或固定定位的元素上;隐藏在屏幕外,或在页面滚动时,尽量停止动画;
  3. JS:在脚本中尽量减少DOM操作,尽量缓存访问DOM的样式信息,避免过度触发回流;减少通过JavaScript修改元素样式,尽量使用修改class名方式操作样式/动画;尽量缓存DOM查找,查找器尽量简洁;
  4. CSS置顶,JS置底;涉及多域名的网站开启域名预解析

页面交互优化

懒加载

可以通过为图片文件添加loading="lazy"的属性来实现

节流防抖

节流

触发高频事件,但在n秒内只会执行一次,在于稀释函数的执行频率

(就像游戏里无论手速多快,多次平A也有频率上限)

防抖

触发高频事件后,n秒内只会执行一次,如果n秒内高频事件再次被触发,则重新计算时间

(就像游戏里释放技能的时候,再按一次技能就会重新冷却)

服务器

服务的有状态和无状态

都是负载均衡服务

判断两个来自相同发起者的请求在服务器端是否具备上下文关系

有状态 无状态
数据同步 需要 /
资源消耗 保存数据 /
带宽消耗 数据同步 /
部署发布 需要额外的数据同步 直接部署
failover 数据可能丢失,同步不完全 数据不会丢失,负载均衡失效转移


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM