“!默认值”对依赖项意味着啥

Posted

技术标签:

【中文标题】“!默认值”对依赖项意味着啥【英文标题】:What does "!default" mean for a dependency“!默认值”对依赖项意味着什么 【发布时间】:2012-02-07 04:51:14 【问题描述】:

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

define(["./_base/kernel", "./has", "./dom", "./on", "./_base/array", "./_base/lang", "./selector/_loader", "./selector/_loader!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):

“!”在模块名称之后表明您要使用特殊的插件功能;如果您只需要“dojo/domReady”,它将像加载任何模块一样加载该模块 其他模块,没有任何特殊的插件功能。

我不知道这个说法是否正确。没错,那么“./selector/_loader”会有某种混合功能吗?

【问题讨论】:

【参考方案1】:

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

当传递给 require 或 define 的模块标识符包含“!”时, 加载程序在感叹号处将字符串一分为二。这 “!”左侧的字符串被视为普通模块 ID 并且是 用作所需插件的标识符;右边的字符串 的 ”!”传递给插件处理。

在您的情况下,“默认”被传递给插件。

【讨论】:

或者换句话说,真正的问题应该是“./selector/_loader 是什么意思”? @missingno 这是一个决定使用哪个选择器引擎的插件。

以上是关于“!默认值”对依赖项意味着啥的主要内容,如果未能解决你的问题,请参考以下文章

转载Maven依赖中的scope详解

如果我在 Scala 中定义多个重载构造函数,我不能定义默认值吗?

WPF 组合框 - 选择第一项作为默认值

1. 依赖项属性 简单理解

创建堆栈大小为默认值 50 倍的线程时有啥危险?

##很多时候,我们新建一个Maven工程,第一步都是添加依赖,可是其中的scope代表了什么呢?