框架与库有什么不同?

444 阅读5分钟

原文地址:What’s the Difference Between a Framework and Library?

买一个房子,或者自己谨慎地建一个?

框架和库之间有什么不同?我在工作和聚会中与开发人员进行了讨论,核心思想可以归结如下:

使用库时是你告诉库该怎么去做,而使用框架时是框架是告诉你怎么去做

框架优势

一般来说,框架会告诉你如何去做。它具有正确的做事方式,并且提供了支持你的工具。

两个完美的例子就是AngularVue

1. 所有工具都在这

这些框架都是由专门的团队创建,并且包含构建大型应用程序所需要的一切。

  • 组件
  • 基本的状态管理
  • 指令
  • 处理表单
  • 路由
  • HTTP
  • 测试
  • 更多(UI库,动画等)

2. 官方风格指南

然后各个团队都提供官方风格指南,描述他们框架最佳的做法。一旦你了解了,就能立即提高工作效率。

3. 简化入门门槛

如果你相信结构并且希望投资,那么框架是你项目的理想选择。培养团队新成员也会变得更加容易,因为他们只需要学习一种核心工具就可以了。

4. 明确的升级路径

最重要的是你的升级路径非常清晰。只需要遵守团队的发布时间表,阅读他们的重大改变,当你准备就绪时即可升级。

框架劣势

这只是我个人的经验,其中肯定忽略了某些东西。

1. 减低性能(有点)

框架必须包含大量代码。更多代码意味着更长的下载时间和性能下降。

但是随着框架成为编译器,我怀疑这将不再是一个问题。

2. 小的项目不需要

就像我们上面讨论的那样,一个可伸缩的架构必须解决许多问题。一些简单的应用使用一整个框架反而会使事情变得复杂。付出与收益不成正比。

3. 违反框架会很困难

这是我大学毕业后的第一份工作,当时我们尝试在Angular意识之外编译一些内容,但是结果不尽人意。我们经过一番尝试和错误以及很多挫败之后,完成了工作。

虽然我听说Vue让你逐步地应用于现有的程序。听起来很有希望。

4. 要学得很多

这点可以应用于任何架构,无论你使用什么工具,学习所有工具都需要时间。要么是一种大工具,要么是非常多的小工具。

5. 容易懈怠

这适用于生活中的任何事情。有时我们用一种特定的方式做事情会让我们太过轻松。这完全取决于你的职业目标。也许这个工具帮助你保持一份稳定的工作或者运行高效的业务构建应用程序。如果这是你想要的,那就继续做吧。

但是如果你像我们许多人一样,对每天使用同样技巧有一点失去新鲜感。试验其他的框架或者库是保持我们技能水平的关键。

库的优势

与框架相反,库是为单一目的构建的实用程序。

  • React构建UIs
  • Redux提供状态管理
  • jquery提供跨浏览器DOM操作

继续列清单,让我们放大React,看它有什么作用。

一个构建用户界面的js库

1. 单焦点

仅此而已。他们的指南像你展示了如何使用React,主要就是它。他们团队没有官方任命用于全局状态管路,路由,HTTP, 服务或者表单的库。

这就是他们的设计选择。这是不是好的取决于你想要找什么。

2. 主动权在你手上

对于库,你有百分比的控制权。你可以决定怎么使用它,并且花一定时间来学习它,以确保一切顺利。

3. 只添加你所需要的

如果你的应用很小,一个库就已经满足了!不需要复杂的事情。随着app的增长,你可以混合搭配不同的库来构建自己的体系结构,这会是一个很棒的学习经历。

4. 学习许多不同工具

说到这里,使用不同的库会使你的js技能保持精益求精。你将会不停阅读文档,尝试新的东西,拓展你的技术视野。

虽然它还不是很完美。。。

库的劣势

自定义架构可能会破坏你的应用

自定义架构刚开始很有趣,但是在将来可能会非常昂贵。如果你是第一次构建,要格外的小心。

一个好的架构可以提高开发的工作效率,并且最大程度上减少添加、修改和删除代码的麻烦。

一个坏的架构会导致无论谁接触它,都会感到恐惧和折磨。

人们之所以选择AngularVue,是因为他们不想冒太大风险和钱来构建他们自己的规则。他们只是简单地学习框架的规则和专注于玩游戏上。

React世界中,任何两个大型应用的结构都会有所不同,这完全取决于团队最佳的想法

选择困难症

有时太多的选项也是一件坏事,我们被可怕的选择困难症所打击。我们没有选择一个库继续前进,而是花了无数个小时来对比几乎做同一件事的不同库

要学的很多

不管是否有框架,一个大的应用都要一定时间来理解。这是为什么强大的架构如此重要的另一个原因,因为它可以简化学习过程。

潜在的升级路径

如果每次升级后,在我的package.json中的两个库不兼容都可以得到报酬,那我就可以退休了。不想多说了。