使用RequireJS动态解析路径

时间:2013-08-06 16:31:43

标签: javascript requirejs

有没有办法用RequireJS动态解析路径?例如,是否可以配置它,如果我这样做

require(['mymodule'], function(mod){ });

将调用我的某种函数,"mymodule"作为参数传递,并且我从中返回的值被Require用作mymodule的路径?


我知道Require在路径解析方面有一些关于配置的精彩约定,我也理解可以手动配置路径。但是现在我正在尝试将RequireJS添加到一个没有考虑到需求的旧项目中,所以我试图看看我的所有选项是什么。

1 个答案:

答案 0 :(得分:2)

通过实施loader plugin

可能最有效

不确定这对您是否有问题,但这意味着您的require语法会变成这样:

require(['myplugin!mymodule'], function(mod){ });

您将使用的具体方法是normalize

  调用 normalize以规范化用于标识资源的名称。某些资源可能使用相对路径,需要将其标准化为完整路径。使用以下参数调用normalize:

编辑:我看到replace plugin上列出了plugins wiki,听起来与您尝试的相似。它只使用load方法,所以我上面所说的normalize方法显然不是一揽子规则。

如果路径是真正动态的,这将无济于事,但如果您只需要修改遗留脚本返回模块的方式(例如,将两个不同的全局变量并将它们置于不同的顶级全局变量下) ,您也可以考虑使用shim config option

中的init挂钩

编辑2 :此问题中发布了一些相关的黑客攻击:Configuring RequireJS to load from multiple CDNs