在我的require.js配置中,我使用urlArgs: "bust=" + (new Date()).getTime(),
來確保我的模塊腳本在開發過程中根本沒有被緩存(這樣做會爲每個請求添加一個唯一的查詢參數,所以它看起來像一個不同的資源緩存)。對不同模塊使用不同的配置選項
但是,有幾個第三方庫我正在使用,我根本沒有改變,並希望他們被緩存加快加載和我的整體開發週期。有沒有辦法只將緩存破壞配置應用到某些模塊,例如基於路徑?
在我的require.js配置中,我使用urlArgs: "bust=" + (new Date()).getTime(),
來確保我的模塊腳本在開發過程中根本沒有被緩存(這樣做會爲每個請求添加一個唯一的查詢參數,所以它看起來像一個不同的資源緩存)。對不同模塊使用不同的配置選項
但是,有幾個第三方庫我正在使用,我根本沒有改變,並希望他們被緩存加快加載和我的整體開發週期。有沒有辦法只將緩存破壞配置應用到某些模塊,例如基於路徑?
urlArgs
選項is used by the nameToUrl
method of requirejs' context。這意味着在上下文中,所有模塊將共享該選項。但是混合上下文比它的價值更麻煩:僅定義兩組配置選項是不夠的,但不同的模塊必須以不同的方式需要,並且來自不同上下文的模塊不能列在單個依賴中名單。
儘管如此,這裏是如何得來的(fiddle)的例子:
// default context
require.config({
urlArgs: "boost=" + (new Date()).getTime(),
paths: {
jquery: "//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min",
}
});
// cached (non-boosted) context
var reqCached = require.config({
context: "cached",
paths: {
jquery: "//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min",
}
});
// define a module "inline", normally it'll go into <base>/main.js
define("main", ["jquery"], function($) {
$("body").append("<div>boosted jquery</div>");
reqCached(["jquery"], function($) {
$("body").append("<div>cached jquery</div>");
});
});
// bootstrap the "application" - load and execute the main module
requirejs(["main"], function(main) {
});
在開發工具,你可以看到這個人爲的例子加載的jQuery的兩個版本 - 一個緩存升壓(依賴的「主」模塊)和一個普通(手動要求與reqCached
上下文)。唉,這是不可能的 - 或者我不知道一種方法 - 混合和匹配這兩個上下文,以便他們透明地提供不同的模塊集合。
我很確定OP正在尋求一個實用的解決方案,而不是一個概念證明(例如使用上下文),當投入使用將會把維護變成一場噩夢。不要誤解我的意思:上下文*有*他們的用途。將一個應用程序拆分爲兩個,以便能夠使用不同的'urlArgs'只是其中之一。 – Louis 2014-10-18 22:40:26
我明確表示不接受提案無法使用:-) – artm 2014-10-18 22:51:46