为什么你不应该使用 Web 框架
你用的是哪个框架?Bootstrap、Materialize、Foundation?Vue、Angular 1、Angular 2、Ember?Ruby on Rails、Sinatra、Express、Meteor、Flask、Korbin、Hapi、Spring 等等。
所有框架都很糟糕。所有框架都很糟糕。我是认真的——它们正在把你们变成糟糕的开发人员。现在就别用它们了。
咱们聊聊这个话题吧,因为我的开场白可能已经让你们大多数人看不懂了。为什么像你这样的人喜欢框架?你是软弱还是愚蠢?还是两者兼而有之?
有了框架,我就不需要重新发明轮子了
当然,我正在造一辆自行车。我不需要重新发明轮子,我只需要一个带轮子的框架就行了。
还有一个方向盘
还有一顶蓝色的帽子。
还有一个引擎。
还有一台 CD 播放器
怎么,你没有CD?好吧,就别用了。或者干脆用CD播放器转MP3播放器的转换器。
适用于您的自行车。
你还在建造它。不过现在是在一辆车顶上。
但没关系,因为 AutocarJS 有一个模块化插件系统,可以让你为这辆令人讨厌的自行车添加自行车踏板。很简单。只需输入“autocar scaffold add pedals”。或者编辑autocar.js.manifest.nightmare
文件。
这容易多了,是吧?
“你不需要重新发明轮子”在两个条件下是可以的:
- 你知道轮子是如何工作的
- 你知道这个轮子是怎么运转的
- 这个轮子没有附带一堆你永远不会使用的垃圾
- 你只想要一个轮子
初学者更容易使用框架
当然,如果你是西斯的话。
什么?没错,一个住在诡异黑色地堡里的西斯尊主。你选择了一条通往终极力量的捷径,却仍然不知道 HTTP 的工作原理。不知道 POST 请求是什么样子的。不知道如何编写表单元素。也不知道如何使用数据库,而不用面对层层叠加的、令人作呕的 ActiveRecord 噩梦……
而且它很容易上瘾。因为你根本不懂任何事物的运作方式,所以你会把你的职业生涯都投入到对 NewShinyFrameworkJS 的追逐中,因为 ShinyFrameworkJS 根本无法满足你的需要。你会永远患上冒名顶替综合症,因为你根本不懂任何事物的运作方式。你会完成你的工作,你会成为一名“React 开发者”或“Rails 开发者”,但你还是会疑惑到底哪里出了问题。
真事。有人去一家知名编程训练营面试,被要求用 Ruby 写 FizzBuzz kata。他们在命令行里输入的第一句话是什么?
gem install rails
你是阿纳金·天行者,你唯一能期待的,就是一辈子对任何事都一无所知,你的事业和生计都建立在你的无知之上。不,你不是达斯·维达。你没那么酷。你是阿纳金,你很烂。
但如果缺乏框架,这真的很难
是吗?真的吗?你试过不用框架写东西吗?我的意思是,你能不用框架写一个漂亮、复杂、面向客户的网站吗?比如像 GitHub 这样的网站……
是的,你可以!
现在的网络比十年前——甚至比十个月前——好太多了。你不需要框架——你只需要花几分钟阅读 MDN 上的文档。你不需要 Sass,CSS 现在有了变量。你不需要 Bootstrap,弹性框或网格就是你的好朋友。
那服务器端呢?除非我用框架,否则怎么工作?
你在开玩笑吧?你见过 HTTP 有多简单吗?
轻松HTTPeasy
看,一个 HTTP 请求:
GET /hello-world?framework=none HTTP/1.1
Accept: text/html
Host: my-hello-world-server.com
这看起来太难解析了吗?真的吗?你几乎可以像阅读单词一样阅读它。它只是一串又长又老的字符串。你应该能够用你选择的任何语言提取出你想要接受的内容类型、方法以及查询字符串参数。如果这么简单,为什么还要依赖一个臃肿、固执己见的框架来为你完成所有工作呢?
我并不是说你应该自己编写 HTTP 的抽象层——几乎每种现代编程语言都内置了抽象层,可以帮你完成繁重的工作。即使没有内置,也有现成的库可用。不妨试试其中一种——一种更简单的通过套接字解释请求和响应的方法。这才是你真正需要的。
“HTTP抽象”是这里的关键思想。它需要从套接字上的字节流抽象成某种合理的东西。框架是对……一堆乱七八糟的东西的抽象。它通常是对别人对网站或程序应该是什么样子的想法的抽象。这不是你的想法,也不是你的产品——而是他们的,它限制了你的创造力。
学习基础知识,而不是某人的抽象概念
Stack Overflow 上充斥着诸如“如何在框架 Y 中做 X”之类的问题,答案包括“你为什么想要做 X?”,“不,你不能”或“你不能做 X,但为什么不做 Z?”。
这是因为提出请求的可怜的开发人员习惯于使用将数据库附加到请求对象或其他对象的框架,而现在他们正在使用具有完全不同抽象的 NewShinyFramework。他们学习错了。
如果您想要职业生涯有一个良好的开端,不要学习框架和框架的抽象,而要学习基础知识。
不要学习 Express 的路由系统;学习 HTTP 的工作原理。
不要熟悉 ActiveRecord 黑客来使您的查询更快,学习编写 SQL。
不要学习如何使用 JQuery、Bootstrap 和 Redux 构建 React,要学习 HTML、CSS 和 JavaScript。
对于您需要做的 99% 的事情来说,它们已经足够了。
这些知识永远不会过时。
与框架不同。
更新
我写了一篇后续文章并回复了这篇文章:
文章来源:https://dev.to/gypsydave5/why-you-shouldnt-use-a-web-framework-3g24