有没有办法用RequireJS动态解析路径?例如,是否可以配置它,如果我这样做
require(['mymodule'], function(mod){ });
将调用我的某种函数,"mymodule"
作为参数传递,并且我从中返回的值被Require用作mymodule
的路径?
我知道Require在路径解析方面有一些关于配置的精彩约定,我也理解可以手动配置路径。但是现在我正在尝试将RequireJS添加到一个没有考虑到需求的旧项目中,所以我试图看看我的所有选项是什么。
答案 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