理解框架与库:何时使用
在编程世界中,框架与库的辩论非常热门。有些人将框架和库视为可以互换使用的词语。然而,事实并非如此,因为它们是不同的。
如果你刚开始学习开发,可能不知道如何对不同的平台和工具进行分类。例如,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 和管理员面板的框架。