2014-03-13 94 views
1

是否有可能在RequireJS中以不同名稱使用相同的模塊? (最感興趣的優化版本)RequireJS:具有不同名稱的相同模塊

我取決於取決於lodash的AMD兼容庫。我的代碼中已有underscore,我希望該庫使用它而不是lodash

當然,我不想修改庫的來源。所以我修改require.js配置:

paths: { 
    'underscore': 'vendor/underscore', // that's for my code 
    ... 
    'lodash': 'vendor/underscore', // that's for the new library 
} 

現在試圖建立的時候,r.js引發的不幸:

The following modules share the same URL. 
This could be a misconfiguration if that URL only has one anonymous module in it: 
    /.../underscore.js: lodash, underscore 

是否有下2個或多個註冊相同的模塊方式不同的名字?

回答

3

通常,對於需要Lodash的代碼加載Underscore並不安全。有一個例外是,如果你100%確定有問題的代碼使用Lodash的Underscore兼容模式。

如果您已經確定,這是在特定情況下的安全,那麼我會用map處理您的具體問題:

map: { 
    "*": { 'lodash': 'underscore'} 
} 

這告訴到處都需要lodash RequireJS,還給underscore代替。

如果需要lodashunderscore,上述方法將返回一個單個模塊實例。如果某人想要以兩個不同的名稱加載相同的模塊代碼兩次,並且希望將模塊狀態分開,則該模式不起作用。例如,一個用於註冊名稱的模塊。如果有人想在負載下的名字foobar這個模塊,並保持在兩個註冊表獨立這樣,所登記foo信息,但不bar註冊不bar(反之亦然),那麼他們將需要兩個模塊因此必須採取其他措施,而不是使用map

+0

謝謝,這工作正常,正是我正在尋找。雖然在我看來,這種配置方式有點奇怪,但這是不重要的:) –

相關問題