我可以将某个包bar
的子模块foo
知道为requirejs
foo/bar
,但我能以某种方式让它使用名称{{1}相反? (这与我们之前存在的约定一致,foo.bar
模块实际上是bar
对象的属性。实际上,所需的名称 foo
实际上是将foo.bar
的状态反映为bar
的属性。)
(当然,foo
,foo
以及下面的所有代码都只是玩具示例。)
bar
的内容是:
js/main.js
requirejs.config({
baseUrl: 'js/lib',
packages: ['foo'],
paths: { ext: '../ext' }
});
requirejs(['foo', 'foo/bar'],
function(foo, bar) {
debugger;
}
);
对define
的来电是:
foo/bar.js
如果我将define('foo/bar', ['foo'], function (foo) { return foo.bar = {} });
的{{1}}调用中的第一个参数更改为js/foo/bar.js
,则代码仍然会运行,但现在define
中的函数会获得'foo.bar'
}作为它的第二个参数。 (当然,我仍然可以通过js/main.js
访问undefined
,因为bar
文件已经像以前一样执行了。)
到目前为止,这是一个更全面的解决方案:
目录结构:
foo.bar
HTML:
foo/bar.js
./ JS / main.js
/.
|-- index.html
`-- js
|-- ext
| `-- require.js
|-- lib
| `-- foo
| |-- bar.js
| `-- main.js
`-- main.js
./ JS /富/ main.js
<script data-main="js/main.js" src="js/ext/require.js"></script>
./ JS /富/ bar.js
requirejs.config({
baseUrl: 'js/lib',
packages: ['foo'],
paths: { ext: '../ext' }
});
requirejs(['foo', 'foo/bar'],
function(foo, bar) {
debugger;
}
);