Używam requireJS 2.x. Dowiedziałem się, że niektóre samouczki (i oficjalne dokumenty) czasami używają
requirejs.config({ [...] });
requirejs(["module"]) ...
i czasami
require.config({ [...] });
require(["module"]) ...
Czy jest jakaś różnica między tymi dwiema funkcjami (require i requirejs)? Nie mogłem znaleźć żadnego słowa na ten temat w dokumentacji. :(
javascript
requirejs
require
Matthias Bayer
źródło
źródło
requirejs
ponieważrequire
jest to już zmienna lokalna w tej sytuacji. Znalazłem to przydatne w komponentach React, aby załadować dodatkowe skrypty wcomponentDidMount
.Czy
requirejs
irequire
to samo?Począwszy od RequireJS 2.1.15
require
iwrequirejs
przestrzeni globalnej są rzeczywiście „dokładnie takie same”, co może wykazać ten test, który można wykonać w konsoli:> require === requirejs true
To, że test zwraca, oznacza
true
, że są to dokładnie ten sam obiekt funkcji . Nie są to dwie funkcje, które mają podobny lub identyczny kod. To ten sam obiekt, kropka.Należy jednak zwrócić uwagę podczas wykonywania przekazany do funkcji jest zwykle różny od globalnego .
define(['require'], function (require) {
require
require
Należy użyć
require
lubrequirejs
?To zależy. RequireJS to program ładujący AMD, ale nie jest to jedyny program ładujący w mieście. Jeśli chcesz napisać kod, który jest w 100% zgodny ze specyfikacją AMD , aby ktoś korzystający z Twojego kodu mógł używać dowolnego programu ładującego bez konieczności modyfikowania kodu, powinieneś używać go
require
na poziomie globalnym, ponieważrequirejs
jest on specyficzny dla RequireJS. Inny program ładujący AMD tego nie zdefiniuje. Specyfikacja AMD definiuje,require
ale nierequirejs
.Jeśli ładujesz coś innego, co definiuje globalny
require
, musisz użyćrequirejs
na poziomie globalnym, aby uniknąć konfliktu.Wewnątrz modułu zawsze używaj,
define
aby uzyskać odwołanie dorequire
. Powinieneś to zrobić niezależnie od tego, czy istnieje konflikt w globalnej przestrzeni.źródło
OK, rzeczywiście mogą być „dokładnie takie same”. Skoncentrujmy się więc na tym, dlaczego miałbyś używać jednego w porównaniu z drugim ...
Nie jest jasne, co należy uznać za „najlepszą praktykę”: jeśli requirejs zapewnia dodatkową pewność, „jeśli niektóre środowiska mogą już mieć wymagania”, to czy nie byłoby dobrym pomysłem zawsze używać funkcji requirejs do definiowania wymaganej konfiguracji. niż wymagana funkcja?
Co się stanie, jeśli wydarzy się to, co nie do pomyślenia, a dane środowisko nie tylko ma już zdefiniowane „wymaganie”, ale także ma zdefiniowane „wymagania”? Czy to oznacza, że powinniśmy mieć również requirejsjs? I tak dalej...?
źródło
$
ijQuery
są. Ma to na celu zapewnienie rezerwy i bycie dobrym obywatelem na wypadek, gdyby środowisko już korzystałorequire
. To bardzo ostry przypadek i zaleca się go używaćrequire
, ale nie jest to konieczne - github.com/amdjs/amdjs-api/blob/master/AMD.md#global-variables-Są to ta sama otwarta witryna, która już została załadowana
następnie otwórz konsolę Chrome
wpisz require w konsoli i naciśnij enter
wpisz requirejs w konsoli i naciśnij enter
można zauważyć, że są to te same funkcje i mają różne nazwy
źródło