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


今天很流行的 Web 框架,半年以后,可能就会在市场上被『淘汰』——技术选型的时候,不被开发人员推荐;又或者它已经推出了全新的版本,使用了全新的 API,我们便需要更新现有应用。

前端框架丰富多彩的今天,快速学习新的框架是每个前端程序员的必备技能

快速学习是基本能力

0?wx_fmt=png

后端程序员,开始一个新的 Web 项目时:

  • 使用 Java 语言,八成会选用 Spring 框架。

  • 使用 Ruby 语言,八成会选用 Rails 框架。

  • 使用 Scala 语言,八成会先用 Play 框架。

而只使用 JavaScript 的前端程序员,开始一个前端项目时。你有几成的把握,能判断他/她出会使用哪个框架?

后端程序员在有限的时间内,只会使用固定的技术栈,固定的框架。对于大部分的公司来说,使用相同的后台语言,是一个更好的选择——即可以减少带成本,又可以沉淀下技术积累。

而前端则不一样,不同的项目都有各自的需求,因此采用使用不同的技术栈。简单的,可以直接使用原生的 JavaScript 完成,又或者是使用 jQuery 完成开发。稍微复杂一点的项目,采用容易上手的 Vue.js 是一个不错的选择。更复杂的项目,便可以使用 Angular,可以方便后台程序员转到前端。

因此,工作一定年限的程序员,都使用过不同的框架。可是,不同的程序员上手新框架的速度,总会存在一定的差异。

那么,怎样才能快速上手一个新的框架呢?

0?wx_fmt=png

学习新的前端框架,要么该框架很火——即热闹驱动开发(Hype Driven Development,HDD),要么你们将采用该框架。在采用新框架的动机里,有一种是:技术演进。使用新的技术、框架,来替换现有的框架。旧的框架在某些地方上,存在着明显的缺陷。

这种情形下,业务知识本身是不变的,只是要由框架本身来应对业务的变化。因此,使用新的技术来替换旧有的框架,就相当的容易——重写,我们甚至可以直接复制、粘贴,大量原有的代码。只是,仅仅做到重写业务逻辑是不够的。我们还要掌握新的框架的核心,并探索更多的可能性。

如何学习新框架:守-破-离

0?wx_fmt=png

我在学校的时候,看到一个关于编程语言的学习建议:学习三种以上的编程语言,并且它们最好是三种不同类型的语言。如面向过程的编程语言 C 、脚本语言 JavaScript、Python,面向对象的编程语言 Java、再加上个近年来火热的函数式编程语言,到底也就差不多了。当我们学习了一门语言,再上手一门相似风格的语言,也是相当轻松地一件事。当我们学习了不同类型的几种语言,未来就可以轻松地绝大多数的语言。

相似的,学习使用 Web 框架也是如此的。现在,对于我而来,使用一个『新框架的姿势』是:

  • 买本中文书或者找个教程、官方的 Guide,花个十几分钟了解一下框架的『知识图谱』。

  • 直接找个官方的示例,运行一下 Demo。

  • 上手写写应用。

  • 查看官方文档,看看自己是不是漏掉了什么重要的东西。

它与我在公司接受培训的时候,学习到的『守破离』观点相似。在保留原来业务的情况下,一步步向前演进。

守:应用业务知识

0?wx_fmt=jpeg

在现有的业务上,使用新的框架是一件容易的事。拿上一份框架的说明书、一份需求文档、一个搜索引擎,就可以很容易地复制出一个产品。唯一的门槛是,你需要会读懂这些内容。这有点像新的知识阶级,只是门槛不再是识字与否,而在于是否能懂编程的知识。

正如维基百科上,对于『守』的介绍一样:

最初阶段须遵从老师教诲,认真练习基础,达到熟练的境界。

新手期的我们,拿到一个新的框架,要一下子对它了运用自如,是一件很难的事。我们只能在一个又一个的练习中,尝试去掌握框架的知识。如,原先我们使用的是 Backbone + jQuery 完成的前端应用,现在要切换到 Vue.js。我们要做的便是尝试使用 Vue.js,并不断地练习一些相关的用法。而在熟练之后,我们也会练习我们的基本套路,如在上文中说到的『新框架的姿势』。

而如果不考虑练习本身的时间因素,便只剩下的一个问题是:如何找到一个合适的练习项目。然而,这样的项目在 GitHub 上有很多。可是即使它能满足我们的需求,我们有时候也不知道怎么练习?

我想问题的关键在于:我们手上没有一个已经成型的业务系统。因此,我建议大家可以从创建一个博客开始做起,先使用现有的技术,再使用新的技术,慢慢的一点点往上添加内容。如我的博客,最早是基于 Django + Bootstrap,慢慢的我添加了一些新的东西:

  • 用于为搜索提供建议的 AutoSuggest

  • 移动应用 API 及博客搜索 API

  • 微信搜索支持功能

  • 支持 Google AMP 来快速加载页面

  • Google Micro Data

尽管越来越多的功能,有一些已经不再维护、关闭了。可是,它让我有机会去练习一些新的技术,掌握一些技术背后的思想,得到一些框架相关的结论。而不是每次与别人讨论时,说:xx 说 xx 框架有这样的问题,而是我试过这个框架,它有这样的问题。

破:学习框架核心

0?wx_fmt=jpeg

基础熟练后,试着突破原有规范让自己得到更高层次的进化。

转换技术栈,本身没有什么技术含量,但是能帮助稳固知识。当我们已经熟悉使用这个框架完成业务时,便可以细入相关思想。

了解这个框架的能力,生成一份与框架有关的索引,也可以用脑图的形势来整理这些内容。

如:

0?wx_fmt=jpeg

嵌入式系统工程师图谱

举例,如 Angular + TypeScript,还有其他更多的可能性

同时,我们还应该理解框架背后的原理。不一定深入,但是觉得去探究。如:

  • MV* 思想

  • 双向数据绑定的基本原理

这些都在我的知乎专栏上《我的职业是前端工程师》有深入的介绍,有时候的读者建议多阅读相关的内容。

离:探索更多可能性

0?wx_fmt=jpeg

在更高层次得到新的认识并总结,自创新招数另辟出新境界。

在那之上,创造出一些新的框架。

如 Redux,最早是运行的 React.js 之上。Angular 2 出来了后,有了 xx。小程序出来后,有了 xx。

同理于此,当出现微信小程序的一两个星期内,我写了几篇原理相关的文章,并介绍了如何创建一个属于自己的小程序应用框架 WINV。又或者是我在对 Virtual Dom 有一定的了解后,便深入 Virtual Dom 的代码,写了一个基于 Virtual Dom 的测试辅助框架 Luffa。

而这些,只有我们理解他们的原理之后,我们才可能做到这样的事。

小结

这些方法适用于大部分的人,但是不一定适合你。你只需要寻找到适合你的路,然后学习。

节选自夭折的《前端进阶指南》

0?wx_fmt=png

点击阅读原文可阅读未完待续的电子书。

发布了658 篇原创文章 · 获赞 958 · 访问量 156万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 代码科技 设计师: Amelia_0503

分享到微信朋友圈

×

扫一扫,手机浏览