簡體   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