2013-04-19 12 views
5

Bir AMD modülü için sunucuya bir istek gönderilmeden önce dojo AMD yükleyici tarafından kullanılan istek URL'lerini değiştirmek mümkün mü? Bir sürüm numarası ile bir istek parametresi eklemek istiyorum.Dojo'nun AMD yükleyicisi üzerinden dojo modülü isteklerine bir istek parametresi eklemek mümkün mü

Çözmeyi denediğimiz sorun, javascript dosyalarının, uygulamanın sürümü güncellenmedikçe tarayıcı tarafından önbelleğe alınmasını istememizdir. İstenen URL'ye bir sürüm numarası ekleyebilirsek bunu yapabilmeliyiz.

cevap

10

paths config özelliği, ayrı modüller için işe yarar görünüyor ve cacheBust tüm modüller için kullanılabilir. Example jsfiddle.

<script> 
var dojoConfig = { 
    paths: { 
     // version a single file by using path with version number 
     "aa": "mylib-aa.js?v=1.0", 
     // standard path, no explicit versioning 
     "bb": "mylib-bb" 
    }, 
    // use v=1.0 for ALL loaded modules 
    cacheBust: "v=1.0", 
    waitSeconds: 10 
}; 
</script> 
<script src="https://ajax.googleapis.com/ajax/libs/dojo/1.8.3/dojo/dojo.js"></script> 
<script> 
require(["aa", "bb"], function() {}); 
</script> 

verilmesi:

"NetworkError: 404 Not Found - https://ajax.googleapis.com/ajax/libs/dojo/1.8.3/dojo/mylib-aa.js?v=1.0.js&v=1.0" 
"NetworkError: 404 Not Found - https://ajax.googleapis.com/ajax/libs/dojo/1.8.3/dojo/mylib-bb.js?v=1.0" 

paths yaklaşım hıçkırık sondaki ".js" olmakla sürüm amaçları Bunun bir sorun olduğunu sanmıyorum için URL yine benzersizdir olarak istediğin şekilde.

+0

Paketlerden bağımsız olarak tüm isteklere aynı http paramlarını eklemekle ne dersiniz? Bunu yapılandırmanın bir yolu var mı? –

+1

Evet, bu "cacheBust" config parametresiyle sağlanabilir - https://github.com/dojo/dojo/blob/1.8.3/dojo.js#L527. –

+0

Teşekkürler Paul, cevabınız yardımcı oluyor, ancak David'in sorusunun cevabı bir fikir olurdu. Tüm paketlerde bunu yapmanın bir yolu olsaydı, bu daha iyi olurdu. – Shilpam

İlgili konular