扩展、插件和附加组件不是一回事——而且我多年来一直把它们混在一起
在安装语法检查器和为我的数字音频工作站(DAW)获取混响效果之间的某个时刻,我突然意识到,我一直在随意使用“扩展”、“插件”和“附加组件”这些词,好像它们可以互换。就像是同一样东西的三个不同名字。差不多吧?其实不然。
这些差异很微妙,这也可能是大多数人从不去深入研究它们的原因。公平地说,科技界也没有太大帮助,因为许多知名应用程序无论如何都会模糊这些界限。仅这一点就足以值得去详细分析。
扩展旨在保持在其自己的领域内
他们借用你的浏览器的语言并使用它
如果你之前问我,我会说扩展只是“浏览器的插件”。那并不完全正确。
扩展通常是一种轻量级的软件,专门用来修改或增强现有的应用程序,通常是浏览器,使用宿主应用程序已经理解的相同语言。例如,Chrome 扩展就是用 HTML、CSS 和 JavaScript 构建的,这些基本上是网络本身的原生语言。
这个设计选择决定了扩展的行为。在 Google 过渡到 Manifest V3 的时代,他们转向了基于事件的服务工作者,而不是一直运行的后台页面,这让它们在资源使用上更加高效,也不那么侵入性。更重要的是,它们运行在沙箱中。我以前总是忽略这个术语,但如果你研究一下沙箱是什么以及它如何在线上保护你,你就会发现它在这里发挥了真正的作用。扩展被严格控制,有明确的权限定义。它们只能访问你明确允许的内容,不能在系统中自由漫游。尽管如此,检查你的 Chrome 扩展权限仍然至关重要,以确保一个工具不会请求超出其合理需要的广泛访问权。
这种架构上的隔离是它们被认为相对安全的一个重要原因。它们不会深入你的系统,也不会自行乱跑;它们停留在浏览器之上,重塑你的体验,而不会过于侵入。
插件一直都是为了更深入而构建的
充满胆量的本地代码
“插件”几乎是我曾经用来形容所有东西的词,尤其是任何感觉更强大的东西。在某种程度上,这种直觉并非完全错误,只是它不够准确。
传统上,插件是二进制可执行文件,是预编译的代码块,通常用 C++ 编写,通过所谓的 NPAPI(Netscape 插件 API)标准运行。与扩展不同,这些插件存在于浏览器的沙箱之外,通常拥有与浏览器自身系统级权限相匹配的访问权限。
这里的经典例子是 Adobe Flash Player。它并没有内置在浏览器中,而是作为一个单独的软件安装,浏览器在遇到自身无法处理的内容时会调用它。然而,这种功能是有代价的;常见的漏洞和利用使其成为恶意软件的主要目标。以这种访问级别运行本地代码会引发严重的安全问题,这也是 Flash 需要被淘汰以让位于更安全的网络标准的原因。到 2020 年,支持实际上已经消失,更安全、更受限制的模型接管了其功能。
不过,在浏览器世界之外,“插件”仍然非常活跃且蓬勃发展。尤其是在创意软件中,它是默认的语言。如果你使用过像 Ableton 或 FL Studio 这样的数字音频工作站 (DAW),你很可能已经使用过每个音乐人都应该拥有的 VST 插件,这些插件可以完成主程序单独无法实现的功能。它们可以模拟硬件合成器,通过复杂的混响算法处理音频,或者实时压缩混音。它们直接运行在你的 CPU 上,这也是它们能够保持低延迟和高性能的原因。
VST标准本身历史悠久;Steinberg在1996年引入了它,如今以VST3形式依然强劲。同样的理念也适用于像Photoshop这样的工具,第三方插件可以增强你的照片编辑技能。
所以在这种情况下,“插件”往往意味着更重、更集成并且更注重性能的软件。它是一种在管道深处工作的软件,能够高速处理原始数据。浏览器领域已经放弃了这种模式,转而追求安全性。而创意工具则仍然依赖这种模式,因为力度和精度比隔离性更重要。
“Add-on” 是人人最喜欢的快捷词
Mozilla 开始了它,剩下的我们接着做下去
现在,“附加组件”这个词的使用就稍微灵活一些。它不是一个严格的技术术语,更像是一个总称。基本上,它的意思就是“你可以附加到主应用程序上的额外部分”。Mozilla 帮助普及了这个用作总括标签的概念,把扩展、插件、主题,甚至搜索引擎都归纳到一个整齐的菜单中。Google Workspace 也采纳了相同的术语,把 Docs 和 Sheets 中的第三方集成称为“附加组件”。
微软,作为微软,选择了“Add-in”(带有一个‘i’)这个词。总体意思相同,但重点略有不同——在企业环境中,这种说法实际上很有分量。传统上,add-in指的是更深层次的集成,即使用COM或VSTO构建的产品,能够直接插入Office的内部对象模型。即使在微软转向基于网页的加载项后,这个名称仍然保留,用以将其与浏览器扩展或更通用的操作系统级别插件区分开来。与此同时,在游戏社区中,“add-on”也存在,通常与“mod”互换使用,用来描述额外的内容或界面调整。它是一个灵活的术语,几乎是一个安全网,用于当确切的架构并不重要时。
一种更简单的理解方式是这样的:如果有人说“附加组件”,他们是在广义上说,只是告诉你某个东西可以扩展应用程序。如果他们说“扩展”,他们是在暗示某物比较轻量,通常基于浏览器,使用网页技术构建。而如果他们说“插件”,他们更多是在指它的功能,通常是某种专业化的东西,往往有更深度、更高性能的集成。
一个关于这变得有点混乱的好例子是 Grammarly。你可以在 Chrome 中安装 Grammarly 扩展,以检查你在网络上的写作。你也可以在 Microsoft Word 中安装 Grammarly 插件,直接校对文档。同一家公司,同样的核心理念,但术语会根据它运行的地方以及如何与软件连接而有所不同。
在你离开之前的一条便条
这并不意味着你在日常对话中需要纠正别人。语言通过使用而不断发展,这些词汇已经交叉使用了几十年。然而,下次有人给你推荐浏览器的“插件”时,你会知道有什么地方稍微不对。而下次你在数字音频工作站中安装一台复古合成器时,你就会完全明白为什么它被称为插件而不是扩展。











