2012-07-11 14 views
5

Birden çok projede kullanmak istediğimiz bir çerçeve oluşturuyoruz. Tüm projeler modülleri ve bağımlılıkları yönetmek için require.js kullanacaktır.AMD modül (ler) i olarak yapılandırılmış yeniden kullanılabilir bir kitaplık nasıl oluşturulur?

İdeal olarak, r.js eniyileyicisini çerçevesini, onu kullanan uygulamalarda sağlanabilecek tek bir dosyada derlemek istiyorum. Bu dosya böyle benim uygulamada ben gibi kod yazmak anlamına çerçevenin tüm modülleri içerir:

define(["framework/util/a", "framework/views/b"], function(A, B) { 
    var a = new A(); 
    // etc... 
}); 

Ama bu yaklaşımla iki sorun vardır görünür.

  1. framework/util/a bağlı olan bu optimize aracı tüm modülleri için isimleri framework.js böyle define("util/a", function() { ... }); olarak bile require.js dahil üretir util/a
  2. bulacaksınız bu framework.js yüklemesi gerekir require.js söylemez tanımlanmış modül util/a göreceli bir modül framework etmektir ve framework/util/a

Ben SOMET eksik muyum kadar böyle tanımlanır olduğunu söyler şey yok framework.js yüklenen Hing veya CommonJS paketin ve kullanım require.js en packages yapılandırma seçeneği olarak benim çerçeveyi yapısı için daha iyi bir yaklaşımdır?

+0

olsa ben, o kadar da çok require.js kullanmadım. Jrburke'den: "just" modülleri bir dizinde kaynak formda dağıtır ', no build.' – rharper

cevap

2

Re: 1. Gerçekten optimizasyonu r.js değil geç yükleme dosyası yollarında menteşeleri gibi kısmi bağımlılığın ağaçları optimize etmek için tasarlanmıştır görünüyor. Örneğin. path/to'u yüklemek için path/to/module sorulması bir kesmek gibi görünüyor. Bir çözüm, tembel yükleme yapmak ve uygulama kodunuzun üstünde framework-built.js'u içerir.

Re: 2. Yani artık framework-built.js tam yolları ile gerekecektir. Tek yol, , dummy-framework.js gibi, tüm framework gerektiren bir yapay ebeveyn oluşturmak olabilir. Bu şekilde dummy-framework-built.js tam yol framework için tanımlar ve tembel yüklü değilse, iyi çalışması gerekir.

Yasal Uyarı: bu benim en iyi çaba :) Bunu yapmak için makul bir yolu yoktur sanmıyorum

+0

Çaba için teşekkürler. Yaklaşımınız bana istediğime ulaşabildiğim en yakın şeyi getiriyor - kesinlikle oylamayı hak ediyor. Ancak, jrburke ile yapılan hızlı bir konuşma, muhtemelen kütüphaneyi hiç bir şekilde derlemek istemediğimi ve bunun yerine tüm kaynak klasörünü dağıtmayı istediğimi söylüyor. – rharper

+0

James'le de konuştum, ayrıca bunu yayınladığımdan beri biraz daha fazla öğrendim. Kendi sorumu cevapladığım http://stackoverflow.com/questions/12302440/requirejs-is-there-a-way-to-achieve-multiple-base-urls adresine bakın. Bu nedenle, canlı tembel yükleme için özel 'yollar 'kullanarak bir' çerçeve 'uygulaması elde ediyorum ve üretimde yerel olarak, aynı yolları yalnızca bir kardeş klasörü olan yerel' çerçeveye 'işaret ederek yapıyorum. – jpillora

İlgili konular