在我的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