快速而肮脏的方式
当涉及到模块系统和相对路径时,可能会有一些意想不到的怪癖,我还没有充分利用它来说明:
require([ "//host/myext/mod1/mod2.js" ],function(mod2){
// If current webpage is http:// or https:// or file://
// it tries to use the same protocol
});
更好的方法
配置require()
以将所有以特定包名称(例如foo
)开头的模块视为来自特定 URL。在您的起始页中,类似于:
<script src="dojo/dojo.js"
data-dojo-config="packages:[{name:'myext',location:'//host/js/myext'}], async: 1, >
</script>
这使您可以极大地改进您的第一个示例:
require([ "myext/mod1/mod2" ],function(mod2){
});
如果您使用的是 Dojo Bootstrap 安装,则可以避免接触您的data-dojo-config
,而是将其放在run.js
启动文件中:
require({
baseUrl: '',
packages: [
'dojo',
'dijit',
'dojox',
'myapp',
{ name: 'myext', location: '//host/js/myext', map: {} }
]
}, [ 'myapp' ]);