浅谈框架和库的区别

什么是框架和库?


初识框架和库

对于好多初学者来讲(例如我),很容易把框架和库搞混淆,分不清它们的具体区别,直到如今我也不是把框架和库搞得很清晰。只是站在初学者的角度,对框架和库的区别有本身的认识和看法。因此今天想在这,给和我同样的初学者剖析下它二者都有哪些区别,以便于咱们能更好的在实际开发中应用框架和库。前端

简单地来分析,咱们把框架(Framework)库(Library,简写Lib)能够用咱们生活中的例子来阐述。vue

假如咱们要买一台电脑,框架为咱们提供了已经装好的电脑,咱们只要买回来就能用,但前提是你必须把整个电脑要买回来。另外,咱们还必须根据框架设定的使用规则来使用电脑。虽然这样用户可能轻松许多,但会致使不少人用同样的电脑,或你想自定义某个部件将须要修改这个框架。而库就如本身组装的电脑。库为咱们提供了不少部件,咱们须要本身组装,若是某个部件库未提供,咱们也能够本身作。

库的使用很是灵活,但没有框架方便,这就是框架和库本质的区别。react


框架和库的区别:

1.库是将代码集合成的一个产品,供程序员调用。

面向对象的代码组织形式而成的库也叫类库。面向过程的代码组织形式而成的库叫函数库。在函数库中的可直接使用的函数叫库函数。程序员

咱们在实际开发中,若是须要用到库,只须要使用库内咱们所需的某部分类或函数,而后本身再实现其余部分的功能。直白的说,库为咱们提供了不少封装好的函数,看起来零零散散,可是咱们使用起来比较灵活,就是哪里须要,咱们就取它里面咱们所需的某部分,用不到它的地方咱们本身来实现。redux

2.框架则是为解决一个(一类)问题而开发的产品。

框架用户通常只须要使用框架提供的类或函数,便可实现所有功能。bootstrap

咱们在开发中使用框架的时候,框架为咱们提供了一条龙服务,一整套的服务,咱们调用框架的时候,取的是整个框架,必须使用这个框架的所有代码,即便有些地方的代码咱们用不到,可是咱们不能挑三拣四。并且,咱们使用框架的时候,必须按照框架设定好的使用规则来使用它,至关于你找别人帮忙,你得听人家的话,按人家的吩咐办事,虽然别人帮你时你可能会轻松,可是你必须听人家的,按人家的意思来。这些点可能让有些人以为框架不是很灵活。react-router

另外,库和框架还有个很大的区别就是: inversion of control. 也就是your code calls a library but a framework calls your code,架构

卖完关子了,如今咱们来细说这个区别。也就是说:当你在调用library的时候,你是按照本身的意愿来control它,好比jQuery(下文还会细说jQuery)。而,对于framework, 那么control就是倒转过来了,是它在control你,好比bootstrap。框架


小结:

上面咱们都说过了,使用库的时候咱们比较随意,想用哪取哪,哪块好用哪,并且把它拿过来能够按照咱们的编写意愿来用。可是框架就不同,咱们好像被它控制着,要使用它,就得听它的,按照它的规则来,即便它某些地方咱们用不到,或者不喜欢,也不能说什么。异步


扩展:

咱们来把上面遗留的jQuery说清楚。jQuery 的定位显得棱模两可,能够说是库,也能够说是框架,为何这么说呢?

官方的来讲,框架也算是库的一种,但倾向于重量级一些,倾向于提供整套的解决方案,倾向于创造一些须要你来遵照的规则和范例。而JQuery属于Java家族,它是一种快捷,小巧,功能丰富的JavaScript库。

因此,你能够把它当成框架来使用。以jQuery为基础架构出你本身的框架。所以咱们不必在这个问题上纠结,我就当它是库,可是能够当框架来用。

还有一点要说的是,JQuery提升的是你的工做效率,并非代码的运行效率。它只是减小了你须要敲的代码量,可是它的执行效率不必定有原生JS的效率高,除非你原生JS写的特别差。

在实际中,像angular、backbone、vue就属于框架,而jQuery、react、underscore就是库,

就单拿React来讲吧,官网本身也说了它是库:

React is a declarative, efficient, and flexible JavaScript library for building user interfaces.

由于框架是有一套解决方案的,React就是纯粹写UI组件的 没有什么异步处理机制、模块化、表单验证这些。React和react-router, react-redux结合起来才叫框架,而React自己只是充当一个前端渲染的库而已。(暂完)

笔者做为一个新人,翻看和欣赏了大神的笔记后,本身总结加工,发表一下本身浅薄的看法,若是哪里说得不对,但愿读者能提出批评和指正,本人表示诚心的感谢。

相关文章
相关标签/搜索