理解框架与库:何时使用

在编程世界中,框架与库的辩论非常热门。有些人将框架和库视为可以互换使用的词语。然而,事实并非如此,因为它们是不同的。

如果你刚开始学习开发,可能不知道如何对不同的平台和工具进行分类。例如,react是一个javascript库。另一方面,angular被定义为一个javascript框架。然而,这两者都用于创建用户界面。

框架和库是软件开发领域中的重要工具。这些工具在以下方面非常重要:

  • 提供构建程序所需的基本组件
  • 提供可在应用程序中重复使用的组件
  • 为应用程序提供结构

本文将帮助你了解框架和库的区别、它们的工作原理和用途。

什么是框架?

框架为开发人员提供构建应用程序的基础。这些工具提供高级组件、库、可重用代码、设计模式、api和工具集,用于构建应用程序。

大多数框架遵循特定的设计理念和体系结构,以确保开发人员构建应用程序时的一致性。

框架还可以带有已定义和未定义的函数和对象。这些功能使得在编辑代码时向应用程序添加功能变得简单。

框架还提供了一套规范和工具集,用于管理应用程序的各个组件,例如业务逻辑、用户界面和数据逻辑。

为什么使用框架

  • 快速开发:如果使用框架,你不需要为应用程序编写所有脚本。此外,一些框架可以轻松地重用各种组件来构建应用程序。
  • 可扩展性和灵活性:框架可以适应小型和大型应用程序。你可以从小处开始,但大多数框架都设计成适应你的应用程序增长的需求。你还可以更改应用程序的某些部分,而不必更改整个源代码。
  • 编程复杂性:一些框架旨在使使用“困难”的编程语言构建应用程序变得简单。
  • 注重调试和维护:大多数编程语言注重功能。然而,框架进一步关注开发人员体验。这些框架提供了使代码维护和调试变得简单的工具和功能。
  • 提高安全性:一些框架内置了安全功能。

框架的示例

不同的语言有不同的框架。以下仅是其中一些示例:

语言 框架
python fastapi、django、flask、tornado
java javaserver faces、spring boot
ruby sinatra、ruby on rails
javascript angular、react、vue.js、node.js、express.js

框架的用途

  • 快速应用程序开发:框架的预构建功能使得快速构建应用程序成为可能。一些框架,如vue.js,具有内置的功能,如路由,可以减少开发时间。
  • 提供公共结构:大多数框架规定了应用程序的流程。这些框架提供可重用的组件,并确保您拥有一致的应用程序结构。
  • 安全性:一些框架具有内置的安全功能,可以保护您的应用程序。
  • web、移动和游戏开发:不同的框架针对不同的领域,如web、移动和游戏开发而创建。
  • api集成:一些框架设计用来与运行应用程序所需的标准web api无缝集成。

什么是库?

在软件开发中,库是一组可用于开发应用程序的函数集合。库提供了预先编写的代码,您可以使用它来为程序添加特殊功能或执行特定任务。

库是使用特定编程语言编写的,以执行特定的功能。例如,react是使用javascript编写的,用于构建用户界面。大多数库都是模块化的,这意味着它们的组件被拆分为小的、可重用的代码片段。

作为开发人员,您不必从头开始编写某些功能的代码;您可以导入一个库来处理它。这样的库允许您自定义代码以满足您的需求。但是,您也可以创建一个自定义库。

为什么使用库?

  • 节省时间:只要有库,您就不必重新发明轮子。作为开发人员,选择适合您需求的库并实现所需功能。这样,您就可以有更多时间来处理实现,而不是常见的任务。
  • 提供可重用的函数:您可能会重复编写相同的代码。一个库可以提供可重用的函数供您在应用程序中调用,并减少应用程序的大小。
  • 提供优化的代码:典型的软件开发过程经过多个步骤。您必须确保测试代码并生成优化的应用程序。大多数库在发布前经过充分的测试和优化。
  • 可选择的库种类:您可以在几个提供类似功能的库之间进行选择。在这种情况下,查看文档、资源和支持这些库的社区,以做出明智的决策。
  • 减少开发成本:在美国,软件工程师的平均小时工资为51美元。库提供了现成的解决方案,可以帮助您减少构建应用程序时的计费时间。

库的示例

不同的编程语言有不同的库。以下是一些库的示例:

语言  库 
javascript lodash, jquery, react, d3.js, underscore.js, algolia places, bideo.js, chart.js, anime.js
python numpy, tensorflow, pytorch, pandas, keras
java junit, jackson databind, guava
php swift mailer, composer, php mailer
库的示例

库的用途 

  • 开发用户界面: react是一个可以用来构建用户界面的完美例子。
  • 扩展功能: 一些库的设计目的是引入核心语言中缺乏的新功能。
  • 特定任务: 一些库实现复杂的功能,比如简化http请求。
  • 测试: 代码测试是一个重要的步骤,可以使用各种库进行自动化。例如,jest和mocha是最流行的javascript测试库。
  • 数据库交互: 一些库充当用户界面和数据库之间的链接。

您还可以探索一些最佳的javascript(js)ui库来构建现代应用程序。

框架 vs. 库

库和框架的目标是实现相同的目标(扩展核心语言的功能)。然而,一些库(例如react和angular)用于构建用户界面,即使前者是一个库,后者是一个框架。以下是一些关键区别:

特性 框架
用途 框架可以具有广泛的范围,如构建 web 应用、移动应用和插件系统 库设计用于特定任务,如数学运算或表单验证
控制 框架提供预定义的流程和结构。大多数框架使用钩子和回调来控制结构和流程。 库提供一组工具和函数。但是,开发人员可以控制何时调用库并使用其函数。
范围 框架在使用方面比较受限。大多数情况下,你只能在该框架内使用属于该框架的内容。 库的范围更大。例如,你可以在 next.js 和 vue.js 等框架中使用某些 javascript 库。
目的 旨在简化应用程序的构建 旨在为应用程序提供可重用的组件
可扩展性 框架设计为可扩展。此类平台提供应用程序功能和特性,你可以在应用程序中使用而无需修改源代码。 库设计用于执行特定任务,不可扩展。
完整性 大多数框架都是全面的,具有路由和 orm 等功能 库设计用于特定任务。例如,如果是状态管理库,它只能执行状态管理功能。
性能 性能是相对的。某些框架很大,而某些框架很小。性能还取决于框架的设计和缓存。 性能是相对的。它基于库的大小和依赖关系。
可替代性 替换库可能意味着重写整个代码。例如,不能仅仅将 next.js 替换为 vue.js 而不进行重大更改。 你可以随意切换使用不同的库。例如,在 javascript 中,你可以在状态管理库中从 redux 切换到 rematch 而不会遇到太多困难。
合并 框架最适合用于启动新项目。例如,你可以启动一个新的 vue.js 项目。但是,你无法将其添加到使用其他框架创建的另一个项目中。 可以将库添加到现有项目中。你可以在特定组件上调用库。因此,你无需更改整个代码库即可将库合并到现有项目中。

框架和库可以在一个应用中共存吗?

可以。这是软件开发中的常见做法。框架提供了应用程序将遵循的基础或预定义结构。该框架还可以带有内置功能,如路由和中间件。

另一方面,你可以添加库来执行特定的功能。例如,你可以使用像 ruby on rails 这样的框架作为后端技术。你可以使用库/ gem,如 device,进行认证。

然而,您必须仔细选择框架和库以及如何集成它们。过度依赖库和框架可能导致应用程序复杂或冲突。有时,某些库是为特定框架设计的。

结论

根据我们的讨论,您可以自信地参与框架与库的讨论。它们都是开发者工具,带有预先编写和可重用的代码。

库使您有权在何处调用它以及应用程序的方向。另一方面,框架提供了一套预定义的规则,您应该遵循这些规则来构建应用程序。然而,值得注意的是,您可以在同一个应用程序中使用框架和各种库。

您还可以探索一些令人惊叹的用于构建内部工具、ui 和管理员面板的框架。

类似文章