找回密码
 立即注册
查看: 1028|回复: 11

怎样精确区分这些名词:库、插件、组件、控件、扩展?

[复制链接]
发表于 2021-4-3 19:53 | 显示全部楼层 |阅读模式
限于web前端和后端开发领域。
发表于 2021-4-3 19:57 | 显示全部楼层
库、框架、插件、加载项、扩展和控件都是组件。
组件(Component)是是一个含义很大的概念,一般是指软件系统的一部分,承担了特定的职责,可以独立于整个系统进行开发和测试,一个良好设计的组件应该可以在不同的软件系统中被使用(可复用)。例如V8引擎是Chrome浏览器的一部分,负责运行javascript代码,这里V8引擎就可以视为一个组件。V8引擎同时也是Node.js的javascript解释器,这体现了组件的可复用性。
库(Library)是一系列预先定义好的数据结构和函数(对于面向对象语言来说,是类)的集合,程序员通过使用这些数据结构和函数实现功能。例如Moment.js是一个javascript库,提供了处理时间的一些函数。
框架(Framework)也是一系列预先定义好的数据结构和函数,一般用于作为一个软件的骨架,但程序真正的功能还需要由开发者实现。框架和库的最大区别在于“控制反转”,当你使用一个库,你会调用库中的代码,而当你使用一个框架,框架会调用你的代码。框架和库是一个有交叉的概念,很多框架都是以库的形式发布的,例如Java的Spring MVC框架,其发布的jar包本身就是一个库。而一个库如果也能通过依赖反转的方式进行扩展,那也可以视为一个框架,例如Python的markdown解析库Python Markdown,可以添加自定义的解析扩展,那么可以被视为一个markdonw解析框架。
下面这张图出自这篇博客Library vs. Framework?,从调用方式的角度比较了库和框架。


插件(Plugin)和扩展(extension)是两个很相似的概念,我没有办法在软件系统的角度给出这二者的区别。插件(或扩展)是对已有应用程序或者库的功能补充,一个软件的插件(或扩展)是实现了该软件预定义接口的组件,用来向已有的软件添加功能。插件在目标软件发布时可以不预先包含,而是在运行时被使用者注册,然后再被目标软件调用。另一个很接近的概念是加载项(Add-on),可以认为加载项是插件(或扩展)的子集,是仅针对应用程序来说的功能补充。一个插件的例子是Flash的浏览器插件,为浏览器实现了运行Flash程序的功能。
控件(Control)是gui编程的一个概念,一般来说一个最终用户可以看到的、可交互的组件,被称为一个控件。例如.NET编程中的System.Windows.Controls.Button是一个控件。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2021-4-3 19:58 | 显示全部楼层
泻药

库:为解决某种特定需求的程序功能集合
插件:参与程序内部运行环节的一段或多段代码集合
扩展:使用程序API扩展程序适用面的一段或多段代码集合
组件:可重复使用并且可以和其他对象进行交互的对象
控件:提供或实现用户界面功能的组件,控件即组件,反之不一定。
发表于 2021-4-3 19:59 | 显示全部楼层
类比一下


库 library 图书馆



插件 plugin 优盘


组件 component 乐高块儿


控件 control 乐高块儿里的小人儿


扩展 extension 延长线

library、component、control只要代码中用到,就是必须的。
plugin、extension是可选的、增强的、非必须的。二者在特定领域中可能有不同的工作方式:比如使用不同的API开发。
component、control可以参考.NET中的组件与用户控件

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2021-4-3 20:02 | 显示全部楼层
这个题待会肯定有人来详细解答,但是题主还是别纠结了,与其把这些概念背的滚瓜烂熟,还不如用的得心应手。
发表于 2021-4-3 20:04 | 显示全部楼层
php角度
库:相当于多个类的集合(可能说的不太准确)。
插件:一个程序的扩展。
扩展:一个语言的扩展。
组件:多个模块和对象的集合。
控件:与用户和组件交互的。

library【库】、component【组件】、contro【控件】l只要代码中用到,就是必须的。
plugin【插件】、extension【扩展】是可选的、增强的、非必须的。二者在特定领域中可能有不同的工作方式:比如使用不同的API开发。
component、control可以参考.NET中的组件与用户控件
发表于 2021-4-3 20:11 | 显示全部楼层
cocoa平台的framework可是和库差不多
太纠结名字 那是学究 百无一用的 只能骗学生或者把别人搞晕
发表于 2021-4-3 20:18 | 显示全部楼层
既然有很多人对这五个板块都觉得很不好区分(但是概念什么的就不多说了,自己去百度吧),所以今天主要就是讲讲它们各自所负责的领域以及在是在哪种情况下需要用到哪个部分。
我准备把库和扩展放到最后再说,先来说说组件、控件和插件:
组件
分布在网页中的各个区域,比如导航栏,编辑栏和菜单栏等等。
组件可以有自己的属性和方法:属性是组件数据的简单访问者;方法则是组件的一些简单而可见的功能。
在软件开发中被重复使用,被重复使用的部分并可以和其他对象进行交互都可以叫做组件。
什么是组件_组件_Web可视化开发_IoT Studio_阿里云物联网平台-阿里云侵删。
控件(控制组件)
属于组件中的一种,是具有用户界面功能的组件,编程中所用到的,可点击控制的模块都可以叫做控件(例如按钮、标签和窗口等都算控件)。
插件
在网页中观看视频时所需要的Flash插件,但是这个插件不可以在编程时写入,只能是自己手动插入才能实现,这就是和普通组件的区别。
还有就是比如一些网页版的3D游戏需要用到的Unity 3D,也是属于插件。
总的来说一些用来辅助主程序运行的都是插件。
库和扩展
库(library)翻译过来就是图书馆,把所有书的内容都放置到这里。有了它,我们就可以更好的去管理书籍里面的内容,进行改写、备份和整理。库的本身就有一些已经定义好的函数和数据结构,你可以选择用或者不用。其实本质上可以把它当成一个辅助工具,并且还可以用来存储各种数据。
扩展其实和插件的概念差不多,都是需要自己来进行插入安装的,但它不是针对程序扩展而是来辅助语言的扩展。
发表于 2021-4-3 20:19 | 显示全部楼层
其实不用区分。。。就是字面意思,对应英文不同,翻过来乱七八糟。
发表于 2021-4-3 20:20 | 显示全部楼层
插件:plugin 遵循一定规范的应用程序接口编写出来的程序,其必须附着在程序规定的平台中运行,不能单独运行。
组件:Component 对数据和方法的简单封装,用以实现具体功能;当系统用到该功能时,组件就是系统的必要组成部分。
模块:module 一个独立的软件单元,有自己的模型model,视图view,控制器controller,模块类似于应用程序。
类库:library 为了解决特定需求的程序功能集合,我的理解一般这种需求,不是业务功能,而是技术基础性功能,如curl,httpclient。
扩展:extension 我的理解不属于固有名称,可以理解是现有功能的延伸,在不同的地方有不同的理解。其有可能是对组件的扩展,也可能是对类库的扩展。有些系统,称第三方为复用设计的代码统一为扩展。


自己的理解:
以上所有概念,都是有个主体作为参照,没有主体就无所谓组件、插件、扩展之类的。
做个比喻,拿房子作为主体:
插件就是家电,需要房子具备冷藏功能时,加个冰箱;需要娱乐功能时,加个电视机;
组件就是窗户,需要采光时设计了窗户,窗户就是房子的一部分;
模块就是房子里内部的房间,也有自己的窗户和门;
类库好比维修工具箱,里面有扳手、电钻、榔头等;
扩展好比加了个雨搭;
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-12-23 21:41 , Processed in 0.102345 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表