2012-04-12 11 views
7

Pobrałem sample-project dla latest-release z RequireJS. Ich ładowanie jest przekazywane do listy parametrów powiązanej funkcji (w odpowiedniej kolejności).Dlaczego RequireJS nie przekazuje jQuery do aliasu funkcji?

Postanowiłem więc spróbować ... ale to nie działa!

  • Firebug (tab netto) pokazuje jQuery jako ładowany: tak RequireJS obvioulsy tak, że część z powodzeniem
  • Firebug (zakładka konsola) pokazuje '$ nie jest funkcją'

Moje pytanie brzmi: : Dlaczego pseudonim nie jest wypełniany?

mój kod wygląda następująco:

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 

    <script src="Scripts/require.js" type="text/javascript"></script> 

    <script type="text/javascript"> 

     require(["scripts/jQuery/Core/jquery-1.7.2.min"], function ($) { 

      // jQuery is not passed-into the function, so the alias fails! 
      $(function() { 
       var stop = ""; 
      }); 
     }); 

    </script> 

</head> 
<body> 
    <form id="form1" runat="server"> 
    </form> 
</body> 
</html> 

Thier próbka wygląda:

//Inside scripts/main.js 
require(["some/module", "a.js", "b.js"], function(someModule) { 
    //... 
}); 
+1

Bueller? Beuller? –

Odpowiedz

16

jQuery powinny być ładowane poprzez specjalną nazwę "jQuery", inaczej won” t się zarejestrować (ponieważ jQuery używa nazwanego definiowania).

// create an alias that points to proper file 
require.config({ 
    paths : { 
    jquery : "http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min" 
    } 
}); 

// require jquery usign the path config 
require(["jquery"], function ($) { 
    console.log($); 
}); 

To główne powody wymienione define jest uważany za anty-wzorzec i powinny być używane tylko w razie potrzeby (jeśli masz kilka modułów wewnątrz samego pliku).

+0

Dziękuję, dziękuję, dziękuję, dziękuję! To mnie napędzało NUTS! –

+0

dziękuję! jedyną odpowiedzią, która zadziałała, aby dołączyć samodzielny plik jQuery. – nirazul

0

Czy Twój folder skryptów to "Skrypty" lub "skrypty"?

Składasz wniosek o "Scripts/require.js", a także o "scripts/jQuery/Core/jquery-1.7.2.min". Spójrz na zakładkę Net w Firebug ... Założę się, że generujesz tam 404.

2

Należy przeczytać "README.md" dla przykładowego projektu jQuery RequireJS +. Istnieje wiele komplikacji związanych z używaniem jQuery, które musisz zdecydować, jak najlepiej sobie z tym poradzić podczas projektu początkowego. Gdy już zorientujesz się, co jest dla ciebie najlepsze i zaimplementujesz je, nie powinno to być już problemem.

Wiele komplikacji wynika również z tego, że jQuery nie jest prawdziwym modułem AMD, po prostu włamują się do bazy kodu, aby zdefiniować, czy wykryje, że funkcja definicji jest dostępna. Na przykład oznacza to, że nazwa modułu jQuery zawsze będzie "jquery" (zapamiętaj małą literę "q"), chyba że sam go zawiniesz, więc jeśli zdefiniujesz ścieżkę do niego w swojej konfiguracji, MUSISZ mieć klucz o nazwie "jquery" (ponownie, z małą literą "q") lub pojawi się niedopasowanie. To trochę nam było, gdy po raz pierwszy ustawiliśmy RequireJS na naszym projekcie (nazwaliśmy klucz "jQuery").

+0

Będę ... dzięki człowieku! –

Powiązane problemy