资讯专栏INFORMATION COLUMN

浅谈框架和库的区别

reclay / 1704人阅读

摘要:只是站在初学者的角度,对框架和库的区别有自己的认识和见解。库的使用非常灵活,但没有框架方便,这就是框架和库本质的区别。框架和库的区别库是将代码集合成的一个产品,供程序员调用。

什么是框架和库? 初识框架和库

对于好多初学者来说(例如我),很容易把框架和库搞混淆,分不清它们的具体区别,直到现在我也不是把框架和库搞得很清晰。只是站在初学者的角度,对框架和库的区别有自己的认识和见解。所以今天想在这,给和我一样的初学者剖析下它两者都有哪些区别,以便于我们能更好的在实际开发中应用框架和库。

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

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

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

框架和库的区别:
1.库是将代码集合成的一个产品,供程序员调用。

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

我们在实际开发中,如果需要用到库,只需要使用库内我们所需的某部分类或函数,然后自己再实现其他部分的功能。直白的说,库为我们提供了很多封装好的函数,看起来零零散散,但是我们使用起来比较灵活,就是哪里需要,我们就取它里面我们所需的某部分,用不到它的地方我们自己来实现。

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

框架用户一般只需要使用框架提供的类或函数,即可实现全部功能。

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

另外,库和框架还有个很大的区别就是: 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本身只是充当一个前端渲染的库而已。(暂完)

笔者作为一个新人,翻看和欣赏了大神的笔记后,自己总结加工,发表一下自己浅薄的见解,如果哪里说得不对,希望读者能提出批评和指正,本人表示诚心的感谢。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/92426.html

相关文章

  • 谈项目中如何选择框架和库(FEDAY主题分享总结)

    摘要:但是在不同的项目中不同的维度权重时不一样的没有统一的原则去解决一个问题要自身实践来测试选择原则妥适性原则避免过渡实现,暂时用一些,现在还可能用不到,或者用的不多库来满足当前需求。 这个两天看了张克军(豆瓣前端专家、前端布道师)在FEDAY的主题分享觉得对中大型项目开发很有帮助所以在这里分享给大家后面会有视频地址。下面介绍重点内容。这里分享的项目是指公司实际产品开发,协同人数比较多,更加...

    go4it 评论0 收藏0
  • 框架(framework)和库(Library)的区别

    摘要:也就是说当你在调用的时候,你按照自己的意愿来他比如。框架要求你用某种形式去写代码,比如遵照的约定,等等。一个简单的分辨方式引入一个依赖,如果要对架构进行修改的,那么就算是框架如果无需修改原有架构,那么就算库。 when you call a library, you are in control. But with a framework, the control is inverte...

    DevWiki 评论0 收藏0
  • PHP回顾之Composer

    摘要:本文简要回顾相关概念和用法。相比之下已是明日黄花。分别对应的命令是根据关键字查找依赖包,例如查找本人发布的包。作为目前包依赖管理的最佳工具,值得每一位开发人员掌握。 转载请注明文章出处:https://tlanyan.me/php-review... PHP回顾系列目录 PHP基础 web请求 cookie web响应 session 数据库操作 加解密 Composer是PHP...

    Ocean 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<