这可能比您正在寻找的更简单,但对于其他可能感到困惑的人:
首先,这是一个 Shim 的非编程定义:
名词:用于对齐零件、使它们适合或减少磨损的垫圈或薄条材料。
动词:楔(某物)或用垫片填充(空间)。
要了解编程术语中的 shim,您需要了解 IE 对 Web 开发人员来说是什么/现在是什么痛苦:
IE 是最早的商用网络浏览器之一。它可能是第一个“免费”可用的。因此,它是在定义浏览器标准之前构建的,即定义如何处理 html 和 javascript。
因此,为了让网站和应用程序在 IE 中正常工作,随着标准的制定,IE 不能或(出于垄断原因)不会更新 IE(这里有一篇很棒的帖子,其中包含更多信息)。这导致 IE 和其他浏览器之间的裂痕随着时间的推移而增长。这种裂痕经常出现在意想不到的错误、样式差异上,并且一些应用程序直接拒绝了用户从其他浏览器运行它的选项。
但是,如果产品要同时适用于两种类型的浏览器,开发人员通常不得不编写两组代码。一个适用于几乎所有现代浏览器,一个适用于 IE。显然,这种做法让保养成为了一场噩梦。但是,随着时间的推移,许多 JavaScript 框架/库开始添加代码来专门解决这些问题。这些代码被称为垫片。因为他们让你的代码“适合”在 IE 中。
例如,当jQuery首次发布时,它相对于其前辈 - 或只是编写自己的库 - 的主要优势是它适用于每个浏览器,甚至 IE。当时 IE 仍然被大量使用,因此这为开发人员节省了大量时间。但是现在 jQuery 已经是第 3 版了。和以前版本的主要区别是它不再支持 IE。那是因为每个人,甚至微软都已经离开了 IE(Win10 的默认浏览器是 Edge)。但是,不幸的是,许多网站和 Web 应用程序是专门为 IE 设计的(出于安全原因)。尽管 IE 在大多数商业应用程序中已经走上了 Dodo 的道路,但它仍然提供其他浏览器没有的安全功能(但它们正在迅速追赶)。即使他们这样做了,更新这些应用程序的成本通常也太大而无法合理。
这基本上意味着很多人仍然被迫使用 IE,所以这些 shims 仍然是必要的。