我可以让bar
某个包的子模块foo
被称为requirejs
as foo/bar
,但我能以某种方式让它使用该名称foo.bar
吗?(这与我们预先存在的约定一致,其中bar
模块实际上是foo
对象的属性。IOW,所需的名称 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
对in的调用foo/bar.js
是这样的:
define('foo/bar', ['foo'], function (foo) { return foo.bar = {} });
如果我将 的调用中js/foo/bar.js
的第一个参数更改为,代码仍会运行,但现在函数将作为其第二个参数。(当然,我仍然可以通过访问,因为该文件像以前一样执行。)define
'foo.bar'
js/main.js
undefined
bar
foo.bar
foo/bar.js
这是迄今为止我所拥有的更全面的总结:
目录结构:
/.
|-- index.html
`-- js
|-- ext
| `-- require.js
|-- lib
| `-- foo
| |-- bar.js
| `-- main.js
`-- main.js
HTML:
<script data-main="js/main.js" src="js/ext/require.js"></script>
./js/main.js
requirejs.config({
baseUrl: 'js/lib',
packages: ['foo'],
paths: { ext: '../ext' }
});
requirejs(['foo', 'foo/bar'],
function(foo, bar) {
debugger;
}
);
./js/foo/main.js
define(function () { return {} });
./js/foo/bar.js
define('foo/bar', ['foo'], function (foo) { return foo.bar = {} });