一直以来受到技术论坛的“荼毒”,要阅读源码。我也就按照很多论坛中说的那样,git clone 一份代码就开始看,结局都不怎么好。主要还是因为以下几种原因:
技术方面说:
- 语法特性掌握还不够
比如说看到 Reflect.defineProperty、Proxy 等一些日常业务开发中少见的用法时不能很好的理解其中的细节,频繁的中断会降低个人学习体验。
- 对 JavaScript 这门语言的设计哲学认识还不够
原型链几乎每个前端都知道,要真的问也都能插上几句话。这个东西长时间不看确实会忘, 正如 王福朋这篇经典的文章中提到 的他每次面试前都要看看。但个人认为原型链是 web 前端开发中不多的值得深刻记忆的东西。
- 构建工具相关的体系
前端开发在最近几年发展迅速,工程化工具也伴随着剧烈变化通常都是 break changes,比如说第一份工作使用 webpack 2.0 进行打包 React,现在我的电脑里还留着一坨关于 webpack 2.0 配置的宝贝。但是第二份工作却是使用 vue 进行开发,有了 vue.config.js 这么好使的玩意儿对 webpack 4.0 生疏也是难免, 毕竟在业务开发中很够用。
再比如说 babel6.0 和 babel 7.0 的区别,按照官网来配置有时候也跑不通。
源代码中有许多工程性质的配置和针对运行时的特殊优化,对构建工具不清不楚看起来自然会很懵逼。
- 数据结构与算法的缺失
比如 vue keep-alive 的实现方式,如果你不了解 LRU 的话,我想很难去看明白他在做什么。
学习方法和心理来说:
过去相当长的一段时间总有这么一种观点:沉浸在技术论坛有助于我的极速成长,我的技术视野得到了扩展但是针对现阶段的我造成的弊端也足够明显。
- 持续性
看到新的技术或名词总想去试试,但浅尝辄止的尝试并不能给现阶段的自己带来过多的帮助甚至会带来迷茫,如果真的想把现在所做的事当作一辈子的事业来做的话这种做法显然有些浮躁了。
- 自信心
看到各种名词、术语、理念、思想自己都不明白经常会给我带来一种深厚的挫败感。从自己走过来的两年再回头看:这些人出于扩展自己的技术影响力也好、分享也好、还是宣传自己也好,很多都是人为的造词或者新瓶装旧酒。
说到这,想起最近发生的一件事: 某司的人力资源领导被优化了,他曾在去年的年底在自媒上发过一篇文章 《行业寒冬之下,为什么被裁的总是你》。
总之作为一个互联网从业者应当具备很强的信息甄别能力。
- roadMap
当你迷茫的时候不知道学什么的时候,第一种方法是去看计算机相关书籍,数据结构与算法也好操作系统也好计算机网络也好。
如果你觉得这种方式太枯燥太理论派你更直接一点的话,可以去找相关机构、课程的目录,但是我觉得没有必要去为此付费,按图索骥的按照目录去学习就好。
第一阶段
首先从比较小的代码区块看起,比如:
之前看ramada的时候遇到一个问题,在 stackoverflow 上提问还收到了作者的回答,
第二阶段
第二步:找到了看源码的感觉后,再去看某个类库的源码,比如说redux、moment这种,功能专一同时也兼顾深度。
第三阶段
这时候自己有了一定的基础和感觉了,可以再去看现在mvvm框架实现的原理,也是从单一的功能开始,拆解mvvm框架的通用实现模式,如双向绑定、虚拟dom等,最后实现自己的mini mvvm。
第四阶段
这时候你具备了看react、vue这种框架的能力了,最好还是带着问题去看,比如看react fiber的原理、如何渲染的,setState怎么操作等等。
但是实际开发中没有这种造轮子的机会,大家的关注点更多还是放在业务上
多端秒开方案、性能优化相关
工程化套件(脚手架、开发调试工具、发布管理)
数据埋点/监控
多端融合
Awesome Flutter:带你从入门到进阶的 Flutter 指南
组件库
- pre code
- low code
互动平台、直播
SSR 微前端
BFF、Serverless、BFF in Serverless
BFF、Serverless、以及BFF in Serverless
灰度平台/ABtest等等
https://juejin.im/post/5da88d795188252f051e2b47
软技能
参考:
路线图大部分参考了知乎中的这篇回答一年经验的前端开发工程师看不懂源码怎么办,