关于 javascript:”!default”对于依赖项意味着什么

What does "!default" mean for a dependency

当我查看 dojo 1.7 amd 依赖列表的源代码时,我看到以下内容:

define(["./_base/kernel","./has","./dom","./on","./_base/array",
"./_base/lang","./selector/_loader","./selector/_loader!default"],

我所知道的感叹号的唯一用途是用于插件,我以前从未见过这个 "!default"。
我阅读了这个页面 "https://github.com/amdjs/amdjs-api/wiki/AMD" 并用谷歌搜索了它,但我没有找到任何答案。
任何人都可以帮我解决这个问题!
谢谢
沃尔夫冈

更新:
谢谢你,Ates Goral,你的回答。
现在一切都对我来说很清楚了。
然后,对于这个特殊情况,令我恼火的是,"./selector/_loader" 在上面的行中出现两次,一次没有参数,下一次有参数。我看到有人写"dojo/domReady!",所以我认为即使没有参数,也必须为插件写一个感叹号。现在我知道插件不需要"!",我会写"dojo/domReady"。

另一个更新:
今天我发现了以下有趣的语句(https://github.com/csnover/dojo-boilerplate 的 main.js):

The a€?!a€? after the module name indicates you want to use special plugin functionality; if you were to require just a€?dojo/domReadya€?, it would load that module just like any
other module, without any of the special plugin functionality.

我不知道这个说法是否正确。它是正确的,那么 "./selector/_loader" 会具有某种混合功能吗?


http://livedocs.dojotoolkit.org/loader/amd

When a module identifier passed to require or define contains an"!",
the loader splits the string in two at the exclamation point. The
string to the left of"!" is treated like a normal module ID and is
used as the identifier for the desired plugin; the string to the right
of"!" is passed to the plugin for processing.

在你的情况下,"默认"被传递给插件。