程序员如何快速学习新的框架

今天很流行的 Web 框架 , 半年以后 , 可能就会在市场上被『淘汰』——技术选型的时候 , 不被开发人员推荐;又或者它已经推出了全新的版本 , 使用了全新的 API , 我们便需要更新现有应用 。
前端框架丰富多彩的今天 , 快速学习新的框架是每个前端程序员的必备技能 。
快速学习是基本能力
后端程序员 , 开始一个新的 Web 项目时:
而只使用的前端程序员 , 开始一个前端项目时 。你有几成的把握 , 能判断他/她出会使用哪个框架?
后端程序员在有限的时间内 , 只会使用固定的技术栈 , 固定的框架 。对于大部分的公司来说 , 使用相同的后台语言 , 是一个更好的选择——即可以减少带成本 , 又可以沉淀下技术积累 。
而前端则不一样 , 不同的项目都有各自的需求 , 因此采用使用不同的技术栈 。简单的 , 可以直接使用原生的完成 , 又或者是使用完成开发 。稍微复杂一点的项目 , 采用容易上手的 Vue.js 是一个不错的选择 。更复杂的项目 , 便可以使用  , 可以方便后台程序员转到前端 。
因此 , 工作一定年限的程序员 , 都使用过不同的框架 。可是 , 不同的程序员上手新框架的速度 , 总会存在一定的差异 。
那么 , 怎样才能快速上手一个新的框架呢?
学习新的前端框架 , 要么该框架很火——即热闹驱动开发(Hype , HDD) , 要么你们将采用该框架 。在采用新框架的动机里 , 有一种是:技术演进 。使用新的技术、框架 , 来替换现有的框架 。旧的框架在某些地方上 , 存在着明显的缺陷 。
这种情形下 , 业务知识本身是不变的 , 只是要由框架本身来应对业务的变化 。因此 , 使用新的技术来替换旧有的框架 , 就相当的容易——重写 , 我们甚至可以直接复制、粘贴 , 大量原有的代码 。只是 , 仅仅做到重写业务逻辑是不够的 。我们还要掌握新的框架的核心 , 并探索更多的可能性 。

程序员如何快速学习新的框架

文章插图
如何学习新框架:守-破-离
我在学校的时候 , 看到一个关于编程语言的学习建议:学习三种以上的编程语言 , 并且它们最好是三种不同类型的语言 。如面向过程的编程语言 C 、脚本语言 、 , 面向对象的编程语言 Java、再加上个近年来火热的函数式编程语言 , 到底也就差不多了 。当我们学习了一门语言 , 再上手一门相似风格的语言 , 也是相当轻松地一件事 。当我们学习了不同类型的几种语言 , 未来就可以轻松地绝大多数的语言 。
【程序员如何快速学习新的框架】相似的 , 学习使用 Web 框架也是如此的 。现在 , 对于我而来 , 使用一个『新框架的姿势』是:
它与我在公司接受培训的时候 , 学习到的『守破离』观点相似 。在保留原来业务的情况下 , 一步步向前演进 。
守:应用业务知识
在现有的业务上 , 使用新的框架是一件容易的事 。拿上一份框架的说明书、一份需求文档、一个搜索引擎 , 就可以很容易地复制出一个产品 。唯一的门槛是 , 你需要会读懂这些内容 。这有点像新的知识阶级 , 只是门槛不再是识字与否 , 而在于是否能懂编程的知识 。
正如维基百科上 , 对于『守』的介绍一样:
最初阶段须遵从老师教诲 , 认真练习基础 , 达到熟练的境界 。
新手期的我们 , 拿到一个新的框架 , 要一下子对它了运用自如 , 是一件很难的事 。我们只能在一个又一个的练习中 , 尝试去掌握框架的知识 。如 , 原先我们使用的是+完成的前端应用 , 现在要切换到 Vue.js 。我们要做的便是尝试使用 Vue.js , 并不断地练习一些相关的用法 。而在熟练之后 , 我们也会练习我们的基本套路 , 如在上文中说到的『新框架的姿势』 。
而如果不考虑练习本身的时间因素 , 便只剩下的一个问题是:如何找到一个合适的练习项目 。然而 , 这样的项目在上有很多 。可是即使它能满足我们的需求 , 我们有时候也不知道怎么练习?
程序员如何快速学习新的框架

文章插图
我想问题的关键在于:我们手上没有一个已经成型的业务系统 。因此 , 我建议大家可以从创建一个博客开始做起 , 先使用现有的技术 , 再使用新的技术 , 慢慢的一点点往上添加内容 。如我的博客 , 最早是基于+  , 慢慢的我添加了一些新的东西:
尽管越来越多的功能 , 有一些已经不再维护、关闭了 。可是 , 它让我有机会去练习一些新的技术 , 掌握一些技术背后的思想 , 得到一些框架相关的结论 。而不是每次与别人讨论时 , 说:xx 说 xx 框架有这样的问题 , 而是我试过这个框架 , 它有这样的问题 。
破:学习框架核心
基础熟练后 , 试着突破原有规范让自己得到更高层次的进化 。
转换技术栈 , 本身没有什么技术含量 , 但是能帮助稳固知识 。当我们已经熟悉使用这个框架完成业务时 , 便可以细入相关思想 。
了解这个框架的能力 , 生成一份与框架有关的索引 , 也可以用脑图的形势来整理这些内容 。
如:
嵌入式系统工程师图谱
举例 , 如+  , 还有其他更多的可能性
同时 , 我们还应该理解框架背后的原理 。不一定深入 , 但是觉得去探究 。如:
这些都在我的知乎专栏上《我的职业是前端工程师》有深入的介绍 , 有时候的读者建议多阅读相关的内容 。