2021 年前端宝典【超三百篇】

特别推荐 1. JavaScript 基础

1.1 执行上下文/作用域链/闭包

  • 理解 JavaScript 中的执行上下文和执行栈[1]

  • JavaScript深入之执行上下文栈[2]

  • 一道js面试题引发的思考[3]

  • JavaScript深入之词法作用域和动态作用域[4]

  • JavaScript深入之作用域链[5]

  • 发现 JavaScript 中闭包的强大威力[6]

  • JavaScript闭包的底层运行机制[7]

  • 我从来不理解JavaScript闭包,直到有人这样向我解释它...[8]

  • 破解前端面试(80% 应聘者不及格系列):从闭包说起[9]

1.2 this/call/apply/bind

  • JavaScript基础心法——this[10]

  • JavaScript深入之从ECMAScript规范解读this[11]

  • 前端基础进阶(七):全方位解读this[12]

  • 面试官问:JS的this指向[13]

  • JavaScript深入之call和apply的模拟实现[14]

  • JavaScript基础心法—— call apply bind[15]

  • 面试官问:能否模拟实现JS的call和apply方法[16]

  • 回味JS基础:call apply 与 bind[17]

  • 面试官问:能否模拟实现JS的bind方法[18]

  • 不用call和apply方法模拟实现ES5的bind方法[19]

1.3 原型/继承

  • ????深入理解 JavaScript 原型

  • 【THE LAST TIME】一文吃透所有JS原型相关知识点[20]

  • 重新认识构造函数、原型和原型链[21]

  • JavaScript深入之从原型到原型链[22]

  • 最详尽的 JS 原型与原型链终极详解,没有「可能是」。(一)[23]

  • 最详尽的 JS 原型与原型链终极详解,没有「可能是」。(二)[24]

  • 最详尽的 JS 原型与原型链终极详解,没有「可能是」。(三)[25]

  • JavaScript 引擎基础:原型优化[26]

  • Prototypes in JavaScript[27]

  • JavaScript深入之创建对象的多种方式以及优缺点[28]

  • 详解JS原型链与继承[29]

  • 从__proto__和prototype来深入理解JS对象和原型链[30]

  • 代码复用模式[31]

  • JavaScript 中的继承:ES3、ES5 和 ES6[32]

1.4 Promise

  • ????100 行代码实现 Promises/A+ 规范

  • 你好,JavaScript异步编程---- 理解JavaScript异步的美妙[33]

  • Promise不会??看这里!!!史上最通俗易懂的Promise!!![34]

  • 一起学习造轮子(一):从零开始写一个符合Promises/A+规范的promise[35]

  • Promise实现原理(附源码)[36]

  • 当 async/await 遇上 forEach[37]

  • Promise 必知必会(十道题)[38]

  • BAT前端经典面试问题:史上最最最详细的手写Promise教程[39]

async function async1() {
  console.log('async1 start');
  await async2();
  console.log('async1 end');
}

// 相当于
async function async1() {
  console.log('async1 start');
  Promise.resolve(async2()).then(() => {
    console.log('async1 end');
  })
}

1.5 深浅拷贝

  • JavaScript基础心法——深浅拷贝[40]

  • 深拷贝的终极探索(90%的人都不知道)[41]

  • JavaScript专题之深浅拷贝[42]

  • javaScript中浅拷贝和深拷贝的实现[43]

  • 深入剖析 JavaScript 的深复制[44]

  • 「JavaScript」带你彻底搞清楚深拷贝、浅拷贝和循环引用[45]

  • 面试题之如何实现一个深拷贝[46]

1.6 事件机制/Event Loop

  • Tasks, microtasks, queues and schedules[47]

  • How JavaScript works[48]

  • 从event loop规范探究javaScript异步及浏览器更新渲染时机[49]

  • 这一次,彻底弄懂 JavaScript 执行机制[50]

  • 【THE LAST TIME】彻底吃透 JavaScript 执行机制[51]

  • 一次弄懂Event Loop(彻底解决此类面试问题)[52]

  • 浏览器与Node的事件循环(Event Loop)有何区别?[53]

  • 深入理解 JavaScript Event Loop[54]

  • The Node.js Event Loop, Timers, and process.nextTick()[55]

这个知识点真的是重在理解,一定要理解彻底

for (macroTask of macroTaskQueue) {
  handleMacroTask();
  
  for (microTask of microTaskQueue) {
    handleMicroTask(microTask);
  }
}

1.7 函数式编程

  • 函数式编程指北[56]

  • JavaScript专题之函数柯里化[57]

  • Understanding Functional Programming in Javascript[58]

  • What is Functional Programming?[59]

  • 简明 JavaScript 函数式编程——入门篇[60]

  • You Should Learn Functional Programming[61]

  • JavaScript 函数式编程到底是个啥[62]

  • JavaScript-函数式编程[63]

1.8 Service Worker / PWA

  • Service Worker:简介[64]

  • JavaScript 是如何工作的:Service Worker 的生命周期及使用场景[65]

  • 借助Service Worker和cacheStorage缓存及离线开发[66]

  • PWA Lavas 文档[67]

  • PWA 学习手册[68]

  • 面试官:请你实现一个PWA[69]

1.9 Web Worker

  • 浅谈HTML5 Web Worker[70]

  • JavaScript 中的多线程 -- Web Worker[71]

  • JavaScript 性能利器 —— Web Worker[72]

  • A Simple Introduction to Web Workers in JavaScript[73]

  • Speedy Introduction to Web Workers[74]

1.10 常用方法

太多了... 总的来说就是 API 一定要熟悉...

  • 近一万字的ES6语法知识点补充[75]

  • ES6、ES7、ES8特性一锅炖(ES6、ES7、ES8学习指南)[76]

  • 解锁多种JavaScript数组去重姿势[77]

  • Here’s how you can make better use of JavaScript arrays[78]

  • 一个合格的中级前端工程师需要掌握的 28 个 JavaScript 技巧[79]

  • 1.5万字概括ES6全部特性(已更新ES2020)[80]

2. CSS 基础

  • position - CSS: Cascading Style Sheets | MDN[81]

  • position | CSS Tricks[82]

  • 杀了个回马枪,还是说说position:sticky吧[83]

  • 30 分钟学会 Flex 布局[84]

  • css行高line-height的一些深入理解及应用[85]

  • A Complete Guide to Flexbox[86]

  • 写给自己看的display: flex布局教程[87]

  • 从网易与淘宝的font-size思考前端设计稿与工作流[88]

  • 细说移动端 经典的REM布局 与 新秀VW布局[89]

  • 移动端1px解决方案[90]

  • Retina屏的移动设备如何实现真正1px的线?[91]

  • CSS retina hairline, the easy way.[92]

  • 浏览器的回流与重绘 (Reflow & Repaint)[93]

  • 回流与重绘:CSS性能让JavaScript变慢?[94]

  • CSS实现水平垂直居中的1010种方式(史上最全)[95]

  • 干货!各种常见布局实现[96]

  • CSS 常见布局方式[97]

  • 彻底搞懂CSS层叠上下文、层叠等级、层叠顺序、z-index[98]

  • 深入理解CSS中的层叠上下文和层叠顺序[99]

  • Sass vs. Less[100]

  • 2019年,你是否可以抛弃 CSS 预处理器?[101]

  • 浅谈 CSS 预处理器(一):为什么要使用预处理器?[102]

  • 浏览器将rem转成px时有精度误差怎么办?[103]

  • Fighting the Space Between Inline Block Elements[104]

3. 框架(Vue 为主)

3.1 MVVM

  • 50行代码的MVVM,感受闭包的艺术[105]

  • 不好意思!耽误你的十分钟,让MVVM原理还给你[106]

  • 基于Vue实现一个简易MVVM[107]

  • 剖析Vue实现原理 - 如何实现双向绑定mvvm[108]

3.2 生命周期

  • Vue 生命周期源码剖析[109]

  • 你真的理解 $nextTick么[110]

  • React 源码剖析系列 - 生命周期的管理艺术[111]

3.3 数据绑定

3.4 状态管理

  • Vuex、Flux、Redux、Redux-saga、Dva、MobX[114]

  • 10行代码看尽redux实现[115]

  • Mobx 思想的实现原理,及与 Redux 对比[116]

  • 使用原生 JavaScript 构建状态管理系统[117]

3.5 组件通信

  • vue中8种组件通信方式, 值得收藏![118]

  • Vue 组件间通信六种方式(完整版)[119]

  • Vue组件间通信[120]

3.6 Virtual DOM

3.7 Diff

  • 详解vue的diff算法[125]

  • Deep In React 之详谈 React 16 Diff 策略(二)[126]

  • React 源码剖析系列 - 不可思议的 react diff[127]

  • 浅入浅出图解 Dom Diff[128]

3.8 Vue 计算属性 VS 侦听属性

  • Vue 计算属性 VS 侦听属性源码剖析[129]

  • Vue.js的computed和watch是如何工作的?[130]

3.9 React Hooks

  • React Hooks 原理[131]

  • React hooks: not magic, just arrays[132]

  • Deep dive: How do React hooks really work?[133]

  • 【React深入】从Mixin到HOC再到Hook[134]

  • React Hooks 详解 【近 1W 字】+ 项目实战[135]

  • 30分钟精通React今年最劲爆的新特性——React Hooks[136]

  • React Hooks 详解(一)[137]

3.10 React Hoc/Vue mixin

  • 探索Vue高阶组件[138]

  • React 高阶组件(HOC)入门指南[139]

  • 深入理解 React 高阶组件[140]

3.11 Vue 和 React 有什么不同

从思想、生态、语法、数据、通信、diff等角度自己总结一下吧。

4. 工程化

4.1 Webpack

4.2 Babel

  • ????一篇文章了解前端开发必须懂的 Babel

  • 不容错过的 Babel7 知识[153]

  • 前端工程师需要了解的 Babel 知识[154]

  • 深入浅出 Babel 上篇:架构和原理 + 实战[155]

  • 深入浅出 Babel 下篇:既生 Plugin 何生 Macros[156]

  • 前端工程师的自我修养-关于 Babel 那些事儿[157]

  • 前端与编译原理——用JS写一个JS解释器[158]

4.3 模板引擎

  • 编写一个简单的JavaScript模板引擎[159]

  • JavaScript模板引擎原理,几行代码的事儿[160]

  • Vue 模板编译原理[161]

  • JavaScript template engine in just 20 lines[162]

  • Understanding JavaScript Micro-Templating[163]

4.4 前端发布

  • 大公司里怎样开发和部署前端代码?[164]

  • 前端高级进阶:前端部署的发展历程[165]

4.5 weex

  • 深入了解 Weex[166]

  • Weex原理概述[167]

  • Weex 是如何在 iOS 客户端上跑起来的[168]

  • 详解 Weex 页面的渲染过程[169]

  • JSBridge 介绍及实现原理[170]

  • ????移动混合开发中的 JSBridge

4.6 前端监控

5. 性能优化

这个知识点不列文章啦,好多文章,列个知识点,动手搜一下吧 ~

5.1 打包阶段

  • Webpack优化——将你的构建效率提速翻倍[175]

  • 性能优化篇---Webpack构建速度优化[176]

  • webpack构建速度与结果优化[177]

  • 让你的Webpack起飞—考拉会员后台Webpack优化实战[178]

  • webpack dllPlugin打包体积和速度优化[179]

  • 使用webpack4提升180%编译速度[180]

  • Webpack 打包优化之速度篇[181]

  • 多进程并行压缩代码[182]

  • Tree-Shaking性能优化实践 - 原理篇[183]

  • 体积减少80%!释放webpack tree-shaking的真正潜力[184]

  • 你的Tree-Shaking并没什么卵用[185]

  • webpack 如何通过作用域分析消除无用代码[186]

  • 加速Webpack-缩小文件搜索范围[187]

  • Brief introduction to scope hoisting in Webpack[188]

  • 通过Scope Hoisting优化Webpack输出[189]

  • webpack 的 scope hoisting 是什么?[190]

  • webpack优化之code splitting[191]

  • webpack 4: Code Splitting和chunks切分优化[192]

  • Webpack 大法之 Code Splitting[193]

  • Better tree shaking with deep scope analysis[194]

  • Front-End Performance Checklist 2020[195]

  • (译)2019年前端性能优化清单 — 上篇[196]

5.2 其它优化

  • 网站性能优化实战——从12.67s到1.06s的故事[197]

  • 浏览器页面资源加载过程与优化[198]

  • 聊聊前端开发中的长列表[199]

  • 再谈前端虚拟列表的实现[200]

  • 浅说虚拟列表的实现原理[201]

  • 浏览器IMG图片原生懒加载loading=”lazy”实践指南[202]

  • 用 preload 预加载页面资源[203]

  • ????App内网页启动加速实践:静态资源预加载视角

  • ????腾讯HTTPS性能优化实践

  • Preload, Prefetch And Priorities in Chrome[204]

  • Front-End Performance Checklist  [205]

  • 图片与视频懒加载的详细指南[206]

  • 使用 Interp Observer 来懒加载图片[207]

6. TypeScript

  • ????TypeScript 是什么

  • 为什么要在javascript中进行静态类型检查[208]

  • TypeScript Start: 基础类型[209]

  • ????TypeScript真香系列——接口篇

  • TypeScript 中高级应用与最佳实践[210]

  • ????typescript 高级技巧

  • 可能是你需要的 React + TypeScript 50 条规范和经验[211]

  • 从 JavaScript 到 TypeScript[212]

  • TypeScript + 大型项目实战[213]

  • TypeScript - 一种思维方式[214]

  • 如何编写一个d.ts文件[215]

  • TypeScript 的声明文件的使用与编写[216]

  • TypeScript 进阶:给第三方库编写声明文件[217]

  • TypeScript泛型[218]

  • TypeScript 重构 Axios 经验分享[219]

  • 手把手教写 TypeScript Transformer Plugin[220]

7. 网络

7.1 HTTP

  • 听说『99% 的人都理解错了 HTTP 中 GET 与 POST 的区别』??[221]

  • 前端基础篇之HTTP协议[222]

  • 都9102年了,还问GET和POST的区别[223]

  • HTTP 响应代码 | MDN[224]

  • 如何理解HTTP响应的状态码?[225]

  • 你所知道的3xx状态码[226]

  • ????关于浏览器缓存你知道多少

  • 浏览器缓存[227]

  • HTTP协议头部与Keep-Alive模式详解