选择和学习框架


前两章讲了框架是什么和有哪些框架。这一章是最实际的部分:要不要用框架、用哪个、怎么学。顺序很重要,因为第一个问题恰恰是最常被跳过的。
你到底需不需要框架?
想象两个项目。第一个是带账户系统、表单,各个页面都对共享数据做出反应的应用。手写这一切,等于把框架早已打磨好的那套底层机制重新造一遍,最后你自己攒出来的这套"原生版框架"东拼西凑、几乎没测试过,没人愿意接手维护。这种情况下选择 Django 或 React,其实是在选一个部件更少的方案,而不是更多。
第二种情况是一个落地页、一个内容站点、一个小脚本,或者一个提交到某处的表单。用纯 HTML、CSS 和一点 JavaScript 就能搞定,不需要构建步骤、不需要更新依赖、明年也没什么要迁移的。给这种页面套上一整套框架,只会给工具链本身带来好处,别的都是负担。很多有经验的开发者会有意选择用原生方式来做,这是一种专业的判断,绝不是新手才会做的妥协。
工程领域有条直白的老规矩,恰好能覆盖这两种情况:KISS,"keep it simple, stupid"(保持简单,别整复杂了)。这话是冲着设计本身说的,不是冲着设计者,意思是最好的方案是用最少的机制就能把活干完的那个。上面两个项目都遵循了这条规矩,只是得出了相反的答案。
所以真正的判断标准就一个问题,每个项目都要重新问一次:选那个让你维护起来负担更小的方案。如果底层机制的复杂度远远超过了产品本身,那就该用框架。如果产品几乎就是全部内容,那就该用原生方式。
怎么选框架
如果答案是"要用",那就用一些不那么光鲜但很实际的标准去选。跑分和功能对比表其实是最没用的参考,因为在同一类框架里,那几个流行的选项速度都够快、功能都够全。真正影响你日常开发体验的是:
生态和社区:文档是否成熟,问题是否有人解答,遇到的问题是否有现成的包能解决。你要加入的团队和代码库:最好的框架往往就是你项目已经在用的那个,团队内部的一致性比新鲜感更重要。就业市场,如果你是为了工作而学:使用量本身就很重要,这也是为什么 React 对很多人来说是理性的第一选择。还有你已经会的语言:Python 开发者上手 Django 会比上手 Rails 快得多,这和质量高低没什么关系,纯粹是语言的问题。
把"不用框架"这个选项留到最后再考虑。如果对比表填满了,而候选框架里没有一个在简洁性这一项上能打过"什么都不用",那这本身就是答案。
怎么学任何一个框架
先学好语言。框架处处都以它的语言为前提:React 代码从头到尾都是 JavaScript,Django 应用里每一行看起来让人费解的代码,底层其实都是 Python。跳过语言直接学框架的人,最后会同时在破解两个谜团——框架的行为和语言的语法——而且根本分不清到底哪个是哪个。如果你的目标是 React,JavaScript 课程才是真正的第一步;如果目标是 Django 或 pytest,Python 课程扮演的是同样的角色。先学语言是这里最大的一条捷径,因为语言这部分知识能用在任何地方。
然后动手做一个小而真实的东西。找一个你真心想做的小项目,一边参考官方教程一边动手,这比看多少视频、读多少文章都更有用,因为框架的样子只有在你自己动手的时候才会真正说得通。刻意让第一个项目保持简单:它唯一的任务就是带你入门框架的思路,杰作可以以后再做。
在这个过程中,一直要问自己:框架到底在替你做什么。每一个方便的功能背后都对应着某个真实的东西:一个路由代表着 URL 解析,一个组件代表着 DOM 更新,一个模型代表着 SQL。你不需要一开始就精通这些底层,但知道它们存在,大致知道框架在用它们做什么,正是"会用框架"和"盲目依赖框架"的区别所在。
到这里,你该知道的都有了
这就是全部要点:用简洁性做判断标准,用不光鲜但实际的标准去选框架,学框架之前先学语言。以后遇到某个具体框架,无论是在这份文档里还是在真实世界中,框架的种类就是帮你给它定位的地图,什么是框架则是这张地图背后的那套定义。

