知识体系

207 阅读2分钟

前端需要不停得学习新知识,不停得研究更加深入的js原理,但是这些都是比较零散的,或者说想到看到然后研究,渐渐的就会产生一种感觉,前端的东西学不完,记不清,感觉有很多东西可以学,但是不知道还有那些东西需要学。

前端时间看到一篇博客,关于知识体系的。突然明白自己缺失的那块在哪里,需要用一个核心体系,将自己所学习所研究的内容串联起来。那么对于前端来说,一个网页从请求到渲染完成,所需要运用的知识就是一个前端完整的体系。

1.打开一个空白网页

a.对于创建一个网页,浏览器做了什么(浏览器进程)

2.输入网页,进行请求

a.网络五层结构
b.三次握手建立连接
c.http1.0 1.1 2.0 https
d.tcp udp
e.请求头 requestHeader
f.前端请求框架,ajax,axios,fetch发送
g.是否发送到服务器,强缓存,协商缓存

3.服务器接收请求

a. 是否由服务器中间层处理, node 中间层
b. proxy代理,node http-proxy
c. 单线程js,node如何利用多核cpu cluster集群
d. 同源策略
f. xss注入攻击 csrf跨站请求伪造(token等防御)
e. express koa koa2 框架了解
g. eventloop node事件循环了解  浏览器事件循环了解
h. 回调地狱  generator  async/await promise
i. 宏任务 微任务  gui渲染
j. 调用栈->作用域链
k. 词法环境,变量对象,活动对象,this
l. settimeout setinterval区别,如何保证计时准确,防抖与节流的创建

4.返回数据,浏览器渲染 a. 状态码 b. 浏览器渲染过程,css树,html树,合并 ,layout,paint, 复合层处理 c. 防止重绘与重排 d. 存储storage cookie e. cookie session f. react 全家桶, react新特性 fiddler, 静态生命周期getDerivedStateFromPops,getSnapshotBeforUpdate h. vue 全家桶 proxy

5.服务器连接处理

a.四次挥手,断开连接
b.websocket长连接

对于前端,还有一些而外的东西,首先是es5,es6,es7内需要熟记以及使用的新特性,常用的有

a. 反引号,书写模板`${}`
b. class 类对象,extend进行继承,原来是原型继承加上构造继承的组合继承
c. 解构赋值... ,也可用交换值 [a,b] = [b, a]

webpack优化:

a.commonsChunkPlugin,抽取公共代码,加载进浏览器后缓存,后续不需要再次请求资源
b.创建cdn加速,将js,css,img静态资源等分别存储在不同的服务器上
c.按需加载,使用import(*),利用pormise,在回调中加载需要引入的js,或者利用require进行按需加载
d.采用模块化hash命名,更新版本点对点更新

js新的特性

a.开启webworker计算