node.js require() önbellek - geçersiz kılmak mümkün mü? | Netgez.com
SORU
9 ÅžUBAT 2012, PERÅžEMBE


node.js require() önbellek - geçersiz kılmak mümkün mü?

Bu node.js gelen belgeleri:

Modül yüklenmeden sonra ilk kez önbelleğe alınır. Bu her ihtiyaç için ('') aynı nesne alacak foo eğer aynı dosyayı çözmek olsaydı döndü. çağrı anlamına gelir (diğer şeyler arasında)

Bir şekilde bu önbellek geçersiz kılmak için var mı? birim testi, yani her test yeni bir nesne üzerinde çalışmak istiyorum.

CEVAP
13 Temmuz 2012, Cuma


Her zaman güvenle gerektiren bir girişi silebilirsiniz.dairesel bağımlılıkları vardır hatta bir sorun olmadan önbellek. Çünkü ne zaman seni silmek, seni silmek sadece bir başvuru için önbelleğe alınan nesne modülü, modül nesnenin kendisi, modül nesne olmayacak GCed çünkü davanın dairesel bağımlılıkları, orada hala bir nesne başvuran bu modül nesne. bir komut bir olduğunu varsayalım.js:

var b=require('./b.js').b;
exports.a='a from a.js';
exports.b=b;

ve senaryo b.js:

var a=require('./a.js').a;
exports.b='b from b.js';
exports.a=a;

ne zaman:

var a=require('./a.js')
var b=require('./b.js')

alacak:

> a
{ a: 'a from a.js', b: 'b from b.js' }
> b
{ b: 'b from b.js', a: undefined }

şimdi Eğer b düzenleyin.js:

var a=require('./a.js').a;
exports.b='b from b.js. changed value';
exports.a=a;

ve yapın:

delete require.cache[require.resolve('./b.js')]
b=require('./b.js')

alacak:

> a
{ a: 'a from a.js', b: 'b from b.js' }
> b
{ b: 'b from b.js. changed value',
  a: 'a from a.js' }

Bunu PaylaÅŸ:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VÄ°DEO

Rastgele Yazarlar

  • Electro Posé

    Electro PosÃ

    21 ÅžUBAT 2013
  • Hot For Nutrition

    Hot For Nutr

    26 ÅžUBAT 2007
  • majesticdubstep

    majesticdubs

    3 Kasım 2011