2012-03-27 23 views
5

Belki de bu belgeyi bir yerlerde özledim ama işte gidiyor. Modülleri yönetmekle ilgilenen bir çekirdek denetleyicim var. Şimdiye kadar yaklaşık 20 modül var ve bunları çekirdek tarafından yüklenecek şekilde kolayca yapılandırabilmek istiyorum. Bu, ihtiyacım olan büyük bir dizi veya çok sayıda çağrı olduğum anlamına gelir. Bir literal nesnede bir modül listesi oluşturmak için kabul edilebilir/iyi bir uygulama var mı ve daha sonra bir modül yükü bunun bağımlılıkları var mı?RequireJS - Modülleri Yönetme Merkezi olarak

Config.js

modules = [ 
    'moduleA', 
    'moduleB', 
    'moduleC' 
]; 

Core.JS

define(
    ['config'], 
    function(config) { 
     // Somewhere in here I parse the list and require() each one ? 
     return { 
      startAll : function() { 
       console.log('starting all modules.'); 

       // Then call a method common to all 'modules' in the list above. 
      } 
     } 
    }; 
    } 
); 

ben yeniyim olarak bunun iyi bir fikir olup olmadığından emin değilim: Ne demek istediğimi bir örnek RequireJS ama hangi modüllerin tek bir yerden yüklendiğini yapılandırabiliyorum. Benim durumumda, daha spesifik olarak yazdığım UI widget'larına başvuruyorum.

cevap

3

Ben aynı tür bir "paket" desenini kullanarak çözdüm. Temel olarak paket, benim widget'ım için bir cephe görevi görüyor. sana bahsettiğimi daha iyi bir fikir vermek için şunu düşünün:

widgets.js: düğme modülü sadece bir fonksiyon döndüren Bu durumda

define(['./widgets/button', ...], function(button) { 
    return { 
     button: button, // expose the widgets here 
     ... 
    } 
}); 

. Kasanıza sığacak şekilde cepheyi düzeltmeniz gerekebilir.

Bu şema

mümkün basitçe cephe alarak widget başvurmak için yapar. Benim durumumda bu oldukça faydalıydı. Aynı düşünceyi diğer bazı yerlerde de modülleri sarmak ve kullanımı daha kolay hale getirmek için kullanıyorum.

Gerçi, bunu yaparak RequireJS avantajlarından bazıları kaybedersiniz. Bu, bazı widget'lara, şu anda biraz ihtiyaç duymamanıza rağmen, her durumda yüklenecektir. Tabii ki bu durumda sadece cepheyi güncelleyebilirsiniz, ancak ekstra çalışma ...

+0

Ne dediğinizi görüyorum. Yüklenen bağımlılıkların bir listesini oluşturmak ve başka bir modüle yüklemek mi? Bu oldukça havalı. – backdesk

+0

Yup. Bunun senin durumun için işe yarayıp yaramadığını bilmiyorum. Gerçi oldukça yararlı buldum. –