很多人(开发者)不知道框架和库的区别。 如果希望成为一名优秀的开发人员(或编码人员),那么理解这一点非常重要。 框架通常被认为是几个库的集合。 但是这并非完全正确。 “谁调用”是指调用者/被调用者之间的关系定义了两个术语的区别。 如果我们谈论库 - 它是“开发者编写代码调用库中其他人编写的代码”。

1.库

1.1. “库”一词的实际含义是什么?

通常,库是预定义函数和类的集合或集合,开发人员可以使用它们来简化工作并促进开发过程。这些函数和类的代码已经在库中编写,开发人员不会为某些特定功能编写代码,他们可以直接在自己的代码中调用和使用库中的代码。
一般而言,任何典型库的大小都不会太大。 尽管通常情况下,库只集中在狭窄的范围内,例如字符串,套接字,IO,因此它们的API也很小,并且只需要几个依赖项。 库只是一组具有其定义的类。

1.2. 为什么需要库?

这个问题的答案非常简单,例如 重用其他人(或其他开发人员)已经编写的代码,这有助于开发人员避免为某些已在库中编写了代码的功能编写代码。

通过一个示例,我们可以了解库的重要作用:

示例

在某些某些库中,有一个名称为:findLastInde()的方法。 此方法的定义是在指定的字符串中找到传递参数字符的索引。 因此,我们可以简单地调用:findLastIndex(char find_char)方法,并通过将字符写在方括号之间传递字符参数。例如, 要搜索字符A的位置 - findLastIndex('A')

1.3. 如何创建库?

假设有一个计划在其中使用字符串的程序,并且希望保持代码“DRY”(不要重复自己),并且将编写一些可重用的函数,如下面的给定程序所示 -

function fetchWords(str) {  
   const words = str.split(' ');  
   return words;  
}  
function creatingSentence(words) {  
   const sentence = words.join(' ');  
   return sentence;  
}

如上所示创建了一个库。 但是仍然需要来保存它以使用(调用)这些函数功能。

1.4 创建和使用库代码

要创建库,请按照以下说明进行操作:

首先,需要为库创建一个接口:mylib.h
接下来创建库的实现:mylib.c
创建一个库OBJ文件(或目标文件),例如 (.o)可以链接到使用该库的程序。
现在,可以通过将其包含在程序中(例如 #include <mylib.h>并将库的代码链接到一个.out文件中。

2. 框架

框架工作只是提供了一个基本结构,我们可以围绕该结构添加代码以具有该系统的重要功能。因此,它允许我们使用一种标准的方式来创建应用程序,并且要牢记的最重要的一点是,如果使用框架来创建应用程序,那么框架自然会迫使我们以特定的标准方式工作。我们还可以学习创建网站和应用程序的标准方法,以使应用程序和网站更加标准化。

框架中定义的功能是可重用的,这意味着如果想在项目中的多个不同位置使用相同的功能,则可以使用它,并且也不需要创建这些相同的功能,因为框架为我们做了很多工作。

框架的另一个定义

简而言之,可以说软件框架是一种抽象,其中框架提供了一种通用功能,可以通过编写其他代码来更改或修改这些功能。这就是提供特定于应用程序的软件的方式。

示例

假设我们正在使用具有许多功能的特定框架(例如“Laravel”),并且这里讨论的是一个单一的功能,这只是模型的使用,它为我们提供了一些可以在项目中的任何地方使用的功能。在这种情况下,我们也不需要编写功能以从数据库中获取数据,并且每当需要获取数据时,我们只需调用该函数即可。

2.1. 框架可以做什么?

框架简化了创建Web应用程序的过程。 那么,假设开发者要从头开始创建Web应用程序,那么他将如何做呢? 他首先创建一些空目录。 并在其中创建一些基本文件,例如“index.html”,style.css,并且每次启动新项目时,都必须从头开始,并且必须为每个新项目重复完全相同的过程。 框架在这里起着重要的作用,它将为用户完成这项工作,开发者只需要从逻辑上开始,用户不必每次创建新项目都从头开始。 现在,用户只需要关注项目的整体情况,框架就可以为我们节省大量时间。

2.2. 库和框架之间的主要区别

库和框架之间的主要区别在于称为“IOC”的术语,它是控制的逆向。这种差异是一种与控制流程有关的技术差异。

假设,当我们使用库中的预定义函数或类时,拥有完全的控制权,并且可以选择何时何地使用库(或调用库中已有的函数或类)。另一方面,如果使用框架,则框架负责流程。框架允许在某些地方插入我们的代码,但它会根据要求调用我们编写的代码本身。

让我们借助vue.js(框架)和jQuery(库)的示例了解它:

假设我们创建一个页面,要在该页面上显示错误以及发生错误时有关该错误的相关信息。在下面的示例中,我们将单击按钮,并假装发生了一些错误。

使用jQuery的程序(一个库)

// index.html  
<html>  
<head>  
<script src="https://code.jquery.com/jquery-3.3.1.min.js"  
</script>  
<scriptsrc="./app.js"></script>  
</head>  
<body>  
<div id="app">  
<button id="myButton">Submit</button>  
</div>  
</body>  
</html>  
// app.js  
// A bunch of our own code,   
// followed by calling the jQuery library  
let error = false;  
consterrorMessage = 'An Error Occurred';  
$('#myButton').on('click', () => {  
error = true; // pretend some error occurs and set error = true  
if (error) {  
    $('#app')  
       .append(`<p id="error">${errorMessage}</p>`);  
  } else {  
    $('#error').remove();  
  }  
});

下面来看看如何使用jQuery。我们要在哪里调用它的方式来构建程序。可以理解这一点,以一名学生的身份去大学图书馆,并因为想学习而将一本特定的书下架了。
在这里并不是说JQuery函数在调用时不需要某些输入值。 但是,jQuery本身就是这些函数的库,拥有完全的控制权。

例子2

在下面给出的示例中将做相同的工作,但是这次我们将使用框架(vue.js)

使用vue.js的程序(框架)

head>  
<scriptsrc="https://cdn.jsdelivr.net/npm/vue"></script>  
<scriptsrc="./app.js"></script>  
</head>  
<body>  
<div id="app"></div>  
</body>  
</html>  
constvm = new Vue({  
template: `<div id="vue-example">  
<button @click="checkForErrors">Submit</button>  
<p v-if="error">{{ errorMessage }}</p>  
</div>`,  
el: '#vue-example',  
data: {  
error: null,  
errorMessage: 'An Error Occurred',  
  },  
methods: {  
checkForErrors()  {  
this.error= !this.error;  
    },  
  },  
});

使用框架时,用户只需要填补空白,VUE本身就是一个具有几个特定属性的构造函数。 它说明了所需的需求,后端VUE决定了所需的位置和时间。 VUE(框架)只是反转控件,我们将代码插入VUE。 该框架具有控制权。
库和框架之间的其他一些基本区别:

编号 框架
1 库是一组可重用的函数和类,开发人员使用它们来执行一些常见的任务。 框架基本上是一段代码,它决定了项目的体系结构或结构,以及如何编写程序。
2 在程序中使用库时,用户在使用库中的函数或类时拥有完全控制权。 不会调用框架中代码,而是由框架调用开发者编写的代码。
3 库有助于链接和绑定过程 框架提供了开发和部署应用程序的标准方法
4 它可以无缝地集成到处于开发阶段的项目中。 它不能无缝地集成到开发过程中,可以在开始新项目时使用它。
示例 jQuery是JavaScript库,可简化厄运操作。 AngularJS是动态Web应用程序的JavaScript框架之一

3. 总结

框架和库的区别
库和框架中编写的代码是由其他人(或其他开发人员)编写的,可以帮助用户以多种方式执行许多标准任务。当然开发人员也可以创建自己的库。
当开发人员在其程序中使用库时,拥有完全控制权,而另一方面,如果是使用框架的用户,则框架本身将拥有完全控制权,而不是用户。 或者可以说,如果用户使用框架,则程序的控制权将反转。
在程序中使用库时,用户可以自由调用和使用要在程序中使用库的任何位置。 在框架的情况下,开发人员没有完全的自由度,尽管在框架中,开发人员需要插入其代码以实现特定功能。

欢迎任何形式的转载,但请务必注明出处,尊重他人劳动成果。
转载请注明:文章转载自 有区别网 [http://www.hasdiffer.com]
本文标题:框架和库的区别
本文链接:http://www.vsdiffer.com/software-framework-vs-library.html
免责声明:本站部分内容除注明转载外,均为本站网站用户投稿或互联网整理。对于该内容的正确性如何,本站不负任何责任。同时,如本网站内容无意之中冒犯了您的权益,请联系站长,邮箱:1478761107#qq.com(使用@代替#),我们核实并会尽快处理。

相关主题

随机