什么是框架和库?认识框架和库对于很多初学者(比如我)来说,很容易混淆框架和库,分不清它们之间的具体区别。直到现在,我还没有把框架和库说得很清楚。只是站在初学者的角度,对于框架和库的区别,我有自己的理解和看法。所以今天想为我这样的初学者分析一下两者的区别,以便我们在实际开发中更好的应用框架和库。简单分析一下,我们可以用生活中的例子来说明框架(Framework)和库(Library,简称Lib)。如果我们要买电脑的话,框架给我们提供了一台已经安装好的电脑,我们只要买回来就可以用,但是前提是你得把整台电脑都买回来。另外,我们必须按照框架设定的使用规则来使用电脑。虽然对用户来说可能会方便很多,但是会造成很多人使用同一台电脑,或者如果要自定义某个组件,就需要修改这个框架。图书馆就像一台您自己组装的电脑。库为我们提供了很多零件,我们需要自己组装,如果某个零件库没有提供,我们也可以自己组装。库的使用非常灵活,但不如框架方便。这是框架和库的本质区别。框架和库的区别:1、库是一种集成了代码供程序员调用的产品。以面向对象代码形式组织的库也称为类库。以面向过程的代码形式组织的库称为函数库。函数库中可以直接使用的函数称为库函数。在我们实际开发中,如果需要使用库,只需要在库中使用一些我们需要的类或者函数,其他部分的功能就自己实现了。说白了,库给我们提供了很多封装的函数,看似散乱,但是我们使用起来更加灵活,就是哪里需要,就拿一部分需要的地方,我们不能在我们自己做的地方使用它。2.框架是为解决(类别)问题而开发的产品。框架用户一般只需使用框架提供的类或函数即可实现所有功能。当我们在开发中使用框架时,框架为我们提供了一站式服务,一整套的服务。我们在调用框架的时候,拿的是整个框架,必须要用到框架的所有代码,即使有些地方的代码用不到,但是也不能挑剔。而且,我们在使用框架的时候,一定要按照框架设定的使用规则来使用。相当于向别人求助。你必须听他们的,按照他们的命令去做。虽然当别人帮助你时你可能会感到轻松,但你必须倾听别人的意见并按照他们的意愿行事。这几点可能会让一些人认为框架不是很灵活。另外,库和框架还有一个很大的区别:控制反转。也就是你的代码调用了一个库,而一个框架调用了你的代码,这是封闭的,下面我们就来详细说说这个区别。也就是说:当你调用库的时候,你按照自己的意愿来控制它,比如jQuery(下面会详细介绍jQuery)。但是,对于框架来说,那么控制就反过来了,它在控制你,比如bootstrap。总结:上面我们已经说过了,我们在使用库的时候比较随意,想用哪个就用哪个,好用哪个就用哪个,随心所欲用。但框架不同。我们似乎被它控制了。如果我们想使用它,我们必须倾听它并遵守它的规则。即使我们不使用它或不喜欢它,我们也不能说什么。扩展:让我们澄清一下上面遗留下来的jQuery。jQuery的定位似乎模棱两可。它可以说是一个库或者一个框架。你为什么这么说?正式的说,框架也是库的一种,但是它更趋向于重量级,趋向于提供一套完整的解决方案,趋向于创建一些你需要遵循的规则和范式。而JQuery属于Java家族,它是一个快速、小巧且功能丰富的JavaScript库。因此,您可以将其用作框架。基于jQuery构建您自己的框架。所以这个问题我们不用纠结,我只是把它当成一个库,但是它可以作为一个框架来使用。另外要说的是,JQuery提高的是你的工作效率,而不是代码运行的效率。它只是减少了你需要敲的代码量,但是它的执行效率可能没有原生JS高,除非你的原生JS写得特别烂。在实践中,angular、backbone、vue等框架属于框架,而jQuery、react、underscore等属于库。仅以React为例。官方网站本身也说它是一个库:React是一个用于构建用户界面的声明式、高效、灵活的JavaScript库。因为框架有一套解决方案,React是纯粹的编写UI组件,没有任何异步处理机制、模块化和表单验证。React、react-router、react-redux的组合称为框架,React本身只是作为一个前端渲染库。(暂时完结)作为一个新人,在阅读欣赏了大神的笔记后,自己总结加工,发表一下浅见。如有不妥之处,还望读者批评指正。在此表示衷心的感谢。
