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