以编程的方式请求package,使得它们可以为你所用,这不是很好的事情吗?我的意思是说,我们在其他语言中一直都是这样做的。我们在C中使用include,在Java中使用import,在Perl中使用use,在Ruby中使用require。
Dojo团队也想要这样做,他们将这个功能加入了平台中。如果你需要使用一个尚未下载的package,你只需要这样做:请求这个package!
在我们的例子中,我们将请求拖放、事件系统和fx这3个package:
对require方法的调用将会动态获取那些package所需的JavaScript代码,并且将它们加载进页面中。你也可以编写你自己package,并且也可以加载你的名字空间。每个包中有一些元数据来告诉请求加载器它真正需要什么。
例如,这里是包含有拖放package的元数据的__package__.js文件:
dojo.hostenv.conditionalLoadModule({
common: [“dojo.dnd.DragAndDrop”],
browser: [“dojo.dnd.HtmlDragAndDrop”]
});
dojo.hostenv.moduleLoaded(“dojo.dnd.*”);
你将会注意到,依赖于宿主环境,在运行时可以加载不同的源文件。如果你不是在一个浏览器中运行Dojo,你就不需要加载HtmlDragAndDrop的源文件。