[英]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.