W wymaganiu możliwe jest zdefiniowanie modułu anonimowego lub nadać mu identyfikator łańcucha. Według Ten artykuł, Zazwyczaj nie używasz identyfikatora ciągu:

Normalnie nie używasz identyfikatora, gdy zdefiniujesz moduł. Jest zazwyczaj używany przez narzędzia podczas optymalizacji aplikacji wymagać wymagania.

Obecnie definiuje moje moduły anonimowo i użyj require.config.paths dla mapowania. Czego nie rozumiem: dlaczego wymaga się, aby określić identyfikator ciągów, jeśli nie są potrzebne?

0
user1694077 12 sierpień 2014, 13:35

2 odpowiedzi

Najlepsza odpowiedź

Dlaczego wymaga się, aby umożliwia określenie identyfikatora ciągów, jeśli nie są potrzebne?

Nie są tylko potrzebni, jeśli wymagają, aby dowiedzieć się, jakiego modułu jest to, że właśnie nazywa się define. Jest to standard, gdy require() załadował plik skryptu, który zawiera moduł, którego nazwisko i ścieżka wie.

Jednak optymalizator umieści wiele modułów w jednym pliku, a musi być inny sposób, aby dowiedzieć się, jakie moduły są define() d. Z Dokumenty:

Te [nazwy] są zwykle generowane przez Narzędzie optymalizacyjne. Możesz jawnie nazwać moduły siebie, ale sprawia, że moduły mniej przenośny - jeśli przeniesiesz plik do innego katalogu, musisz zmienić nazwę. Zazwyczaj najlepiej jest uniknąć kodowania w nazwie Moduł i po prostu pozwól, aby narzędzie optymalizacyjne oparzenia się w nazwach modułów. Narzędzie optymalizacyjne musi dodać nazwy, aby więcej niż jeden Moduł można dołączyć do pliku, aby umożliwić szybsze ładowanie w przeglądarka.

1
Bergi 13 sierpień 2014, 12:43

Nie mogę odpowiedzieć na motywacje Jamesa Burke'a, ale mogę wskazać instancje swojej przydatności.

  • Zdefiniuj własną jedną stronę "warstwę" do testowania, przy użyciu JSBIN lub JSFIDDLE. Poniższy kod można łatwo wykonywać bez konieczności wyboru punktów końcowych dla każdego modułu lub do użycia R.js do utworzenia warstwy.

    define('A',[], function(){ console.log('A loaded');});
    define('B',[], function(){ console.log('B loaded');});
    define('c',['A','B'], function(){ console.log('C loaded');});
    
  • Zdefiniuj "lokalne nadpisanie" do rozwiązywania problemów. Dodaj define tuż przed require, aby łatwo zwolnić definicję modułu Dodaj nowy moduł, dzięki czemu nie musisz dotknąć kilku plików podczas pracy

    define('plugin/fancySelect',[], function(){/* ... */});
    require([ /* ... */], function(){
      // your main application code
    });
    
0
Robert Harvey 12 sierpień 2014, 21:39