RequireJS - 自定义路径和文本!插入

时间:2014-04-02 16:56:32

标签: javascript requirejs requirejs-text

我正在开发SPA,并使用requireJS优化器优化了我的一个代码文件,并设置了这样的新路径:

config.paths['billingmanager/billing/billing'] = 'billingmanager/billing/billing-build';

不幸的是,现在(概念上)执行此操作的代码

require(['text!billingmanager/billing/billing.htm'], callback);

现在试图找到billingmanager/billing/billing-build.htm并惨遭失败。

我可以告诉文字!那,无论如何设置billingmanager/billing/billing的正常需求路径,我都希望您获取文件billingmanager/billing/billing.htm - 句点。

我有一个解决方法,做这样的事情

config.paths['billingmanager/billing-htm'] = 'billingmanager/billing/billing.htm';

然后手动知道使用require(['text!billingmanager/billing-htm']);,但我真的希望这里有一个简单的解决方法。

1 个答案:

答案 0 :(得分:3)

我没有遇到这个具体问题,但我要解决的第一件事就是用相对路径替换我给text!的路径,这应该避免与你paths中的路径冲突。所以,例如:

require(['text!../parent/billingmanager/billing/billing.htm'], callback);

当然,您应该使用的实际相对路径取决于应用程序的体系结构。事实证明,仅仅使用./就不足以解决RequireJS'聪明如此,在上图中,我退出当前目录,然后返回。我假设当前目录名为parent

请注意,text!路径的路径解析规则与常规路径解析规则的不同。通常,在require的路径中添加扩展名会完全绕过paths设置。因此,require(['billingmanager/billing/billing/foo.js']...会查找相对于billingmanager/billing/billing/foo.js的名为baseUrl的文件,并且不会使用您在问题中显示的paths设置。 text!的路径不是这种情况。这些路径即使有扩展名,也会通过paths设置。 (记录在案here。)