Categories
程式開發

如何学习一个框架?


在这个技术迭代越来越快的时代,有效的学习能力能让我们更好的应对甚至拥抱变化。本文对笔者在掌握流行的前端框架过程采用的思路进行抽象总结,提炼为十问。

产生原因?适用范围?设计理念?生命周期?代码解耦?通信协作?能力扩展?依赖协作?领域难点?生态支持?

产生原因?

一个框架的产生原因,能清晰的阐述是谁?因为什么?做了什么?将来会怎样?这些问题将在一定程度上成为技术选型的决定性因素。

是谁? 透过这个问题能看到开发者的技术底蕴,这决定了本身项目的起点,对于项目的持续性发展有着很大的影响。因为什么?这个问题回答了开发者在当时面对了什么样的问题,通过当时的取舍能判断框架大体的发展方向。做了什么?一个框架的诞生与发展需要开发者体系化的思考,这能明确我们需要做什么才能介入或者应用这个框架。将来会怎样?明确问题域及迭代规划能较准备的把握迁入时机。

适用范围?

每个框架都有自己独特的问题领域和局限性,对于当前的问题领域要明确在什么场景下能解决什么问题?这有助于我们明确在哪些场景下引入能产生极大的价值,而哪些场景下引入反而得不偿失。

设计理念?

框架的设计理念决定了框架的架构体系,这有助于我们理解整个框架运转体系以及写出更恰当的代码。以React为例,核心理念是: UIs are simply a projection of data into a different form of data. 就像一个函数 UI=transfer(data) ,对应的 HOC、Immutable等都是该理念的衍生产物。

生命周期?

掌握了框架的生命周期就掌握了框架的运行机制,这对于后续的代码优化及问题排查能奠定良好的基础。与生命周期对应的核心API是我们编码逻辑对接的主战场,也是框架二次封装及改造最核心的地方。

代码解耦?

对于一个常规项目来讲,解决的往往是成规模的大量问题,这会需要更多的人进行更多协作性的编码产出,那么代码的解耦拆分以及复用将是决定项目能否以近线性的成本迭代的核心因素。

通信协作?

有分就需要有何,代码解耦拆分后,各模块的通信协作是影响项目复杂度的核心因素。

能力扩展?

框架的扩展能力能提升框架的适用场景,并能推动框架的发展。

依赖协作?

框架对运行平台以及第三方依赖的协作,也是我们需要掌握的一个方面。这对于项目的架构设计能提供有效的决定性因素,当然也能帮助我们有效的解决遇到的问题。

领域难点?

要想深层次掌握一个框架的适用,必须明确在其问题领域中的核心难点如何利用该框架进行解决,核心难点往往决定了框架的上限,比如Web领域的表单及高性能渲染。

生态支持?

生态支持意味着框架的成熟度,良好的生态在开发链路及解决问题方面能给予极大的帮助。

—–走走想想总结一下!