繁体   English   中英

从“ RequireJs”指定相对路径

[英]Specifying relative paths from `RequireJs`

我有baseUrl在设定为RequireJs基于应用/angular 有时我想设置相对于基础的路径,其他时候我想相对于当前目录设置。

我对RequireJ很陌生,非常困惑。

这就是我现在所拥有的:

require([
    'require',
    'angular',
    'module/draft/draftDisplay'// module that I want relative to baseUrl
], function(requireLocal, angular) {

requireLocal('./autoSave'); // Modules that I want relative to current url
requireLocal('./module');

产生此错误的原因: Error: Module name "autoSave" has not been loaded yet for context: _

如前所述,我无法很好地了解RequireJs的工作方式。 我不明白的一些事情是:

1)RequireJs何时使用baseUrl,何时使用当前目录

2)模块ID和其路径之间有什么区别?

3)在require([...],..数组中指定先前模块的方式是否会影响后续模块的解析方式(当我修补时似乎是这种情况)

如果您可以在回答中包括这些内容,那将非常有帮助。

1)RequireJs何时使用baseUrl,何时使用当前目录

始终为baseUrl ,除非模块名称以./../作为前缀,在这种情况下,它使用需要另一个模块的目录。

2)模块ID和其路径之间有什么区别?

该路径包括baseUrl 例如,可能是scripts/vendor/angular/angular.js 模块ID不包括baseUrl或后缀,例如,对于baseUrl: 'scripts' ,上面的模块ID将为vendor/angular/angular

3)在require([...],..数组中指定先前模块的方式是否会影响后续模块的解析方式(当我修补时似乎是这种情况)

没有。


您的错误是由于对未加载的模块使用require的同步版本引起的。 请改用异步版本; 就像是:

requireLocal(['./autoSave', './module'], function(autosave, module) {
    // here autosave and module are loaded
});
// BEWARE: Here neither autosave nor module are loaded

但是您确定要内在要求吗? 从您提供的信息中,从外部需求中拉出需求可能就足够了,即

require(['require','angular','module/draft/draftDisplay','./autoSave','./module'],...)

另外,称为'module'的导入在require中具有特殊含义; 它包含有关当前模块的信息; 如果从字面上使用'./module' ,它将与'module'有很大不同(第一个在与此文件相同的目录中查找module.js文件,第二个提供有关此模块的信息)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM