我正在编写一个包含多个模块/文件的库。其中一个文件(让我们称之为Main)取决于所有其他文件,因此当用户加载此文件时,整个库将被加载。
现在用户可以将我的所有库放在子文件夹中(让我们称之为subdir1),所以他配置了这样的requirejs:
require.config({
paths: {
"jquery": "Scripts/jquery-2.0.3.min",
"knockout": "Scripts/knockout-2.3.0",
"MyLib.Main": "subdir1/MyLib.Main"
}
});
在这种情况下,subdir1 / MyLib.Main.js文件将加载正常,但如果此文件依赖于MyLib.Helper模块,那么requirejs将尝试从MyLib.Helper.js而不是subdir1 / MyLib.Helper加载它.js文件所在的位置。
有没有办法告诉requirejs从subdir1加载子模块?我知道我可以枚举配置中的所有模块,但这需要最终用户知道我的库的内部结构(这是不可接受的)。理想情况下,我应该能够枚举应该从MyLib.Main.js文件中的subdir1加载的所有模块(但请注意,此时我不能硬编码它将是subdir1)。
答案 0 :(得分:1)
要求您的用户在其require配置中配置LIBNAME_PATH变量 然后使用此路径变量为您的所有路径添加前缀
示例:
require.config({
paths: {
"jquery": "Scripts/jquery-2.0.3.min",
"knockout": "Scripts/knockout-2.3.0",
"MyLib_PATH": "subdir1",
"MyLib.Main": "subdir1/MyLib.Main"
}
});
然后在subdir1/MyLib.Main
中,您可能会遇到以下情况:
require.config({
paths: {
"MyLib.Helper": "MyLib_PATH/MyLib.Helper"
}
});
requirejs然后应该按照用户的配置将MyLib_PATH
解析为正确的路径。
这是一个超级未经测试的草案,但我认为它应该有用。
这意味着您必须在库中使用此LIBNAME_PATH
无处不在的。