2013-03-27 8 views
8

Używam RequireJS do zarządzania zależnościami w rozwoju, ale przy produkcji chciałbym usunąć wszystkie zależności od programu ładującego AMD. Wygląda na to, że optymalizator RequireJS tworzy plik, który nadal używa obciążenia AMD w czasie wykonywania - po prostu szukam statycznego (nie zależnego od AMD, ale wciąż kompatybilnego z AMD) pliku, takiego jak to, co produkuje jquery (patrząc na jquery source, wydaje się, że ręcznie zamawiają swoje zależności w swoich plikach tekstowych). czy to możliwe?skompilować RequireJS, aby usunąć zależność AMD

Jestem również otwarty na używanie innych bibliotek niż RequireJS.

Uwaga: Jest to podobne do mojego innego pytania Javascript requirejs in development but compiled in production, ale w tym przypadku chcę usunąć AMD razem.

+1

Jak o użyciu mniejszej ładowarka AMD, jak Almond? - https://github.com/jrburke/almond –

+0

@SimonSmith Mam zamiar usunąć AMD razem, ale ze skompilowanej wersji. Czy w przypadku kompilacji do pojedynczego pliku muszę używać AMD? –

+0

Jestem również ciekawy tego, ponieważ nie chcę, aby AMD było konieczne (wystarczy) - czy w końcu to rozwiązałeś? –

Odpowiedz

3

Jeśli chcesz mieć swój skrypt do załadowania za pomocą tagu <script> lub AMD, możesz użyć czegoś opartego na how my EventEmitter class exposes its self.

// Expose the class either via AMD, CommonJS or the global object 
if (typeof define === 'function' && define.amd) { 
    define(function() { 
     return EventEmitter; 
    }); 
} 
else if (typeof module !== 'undefined' && module.exports){ 
    module.exports = EventEmitter; 
} 
else { 
    this.EventEmitter = EventEmitter; 
} 

Naraża przedmiotu poprzez AMD, CommonJS (węzłów) i światowy obiektu (tj window). Ma to jedno główne zastrzeżenie, jest przeznaczone dla skryptów z pojedynczym plikiem, które chcą eksponować swoją klasę za pośrednictwem AMD.

Jeśli masz dużo modułów, możesz najpierw skompilować skrypt za pomocą r.js, shim AMD z Almond, a następnie użyć czegoś podobnego do powyższego, aby odsłonić je na wiele sposobów.

-1

Miałem ten sam problem co ty.

W końcu to rozwiązałem i stworzyłem podstawową strukturę projektu requireJS i Gruntfile, które wykonują automatyzację.

  1. procesowej, pomniejszona
  2. Optymalizacja requireJS.
  3. Usuń AMD
  4. Zamień znaczniki skryptów w kodzie HTML z wymaganej składni na znacznik skryptu sintax.

Mam nadzieję, że ci to pomoże.

https://github.com/sheldorn/require-base-structure

Powiązane problemy