在requirejs,你可以定义一个模块没有设置它的名字从字面上看,例如:requirejs如何确保为匿名模块正确设置模块名称?
//in a.js
define([/*deplist*/],function(){
/*do something*/
});
//in b.js
define([/*deplist*/],function(){
/*do something*/
});
而且requirejs将根据其文件名(“A”和“B”)设置的模块名称。 Requirejs全部添加<script>
标记您的应用程序需要,它们不会按顺序加载(如网络时间表所述)。
当被叫define
模块来定义自身,它毫不知情的模块名称,然后把自己的defQueue
等待初始化。初始化将在加载事件处理程序中完成,因为在事件处理函数中,节点引用是可访问的,并且模块名称是节点属性上的记录(如下所示:<script type="text/javascript" charset="utf-8" async="" data-requirecontext="_" data-requiremodule="a" src="./a.js"></script>
)。
问题出在这里,我们无法确保模块调用define
的顺序与模块的节点load
事件触发相同。那么模块名称如何才能正确映射到模块工厂?