“!默认值”对依赖项意味着啥
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 这是一个决定使用哪个选择器引擎的插件。以上是关于“!默认值”对依赖项意味着啥的主要内容,如果未能解决你的问题,请参考以下文章