Pytanie Jakie są zalety korzystania z AMD, takich jak requirejs lub moduły commonjs w javascript?


Czytałem wiele artykułów na temat rozwiązań AMD, takich jak RequireJS lub moduły ładujące, które podążają za stylem CommonJS w JavaScript.

Powiedzmy, że mam podzieloną aplikację na te części:

  • Definicja aplikacji, która opiera się na strukturze, której używam
  • Model 1, który opiera się na definicji aplikacji i strukturze
  • Model 2, który opiera się na definicji aplikacji, modelu 1 i mojej strukturze

Mogę napisać każdą część jako moduł RequireJS lub wspólny moduł JS i podzielić mój projekt na ile plików chcę, ale jaką zaletą jest zapisywanie każdej części jako modułu lub dzielenie ich na wiele plików, a następnie ładowanie w odpowiedniej kolejności ( aby uniknąć problemów związanych z zależnościami) może połączyć wszystkie pliki w duże, aby zredukować żądania HTTP (jak to zrobił optymalizator r.js)?


15
2017-08-18 23:06


pochodzenie




Odpowiedzi:


Moim zdaniem istnieją trzy ważne powody:

Możesz tworzyć i ponownie wykorzystywać moduły bez zanieczyszczania globalnej przestrzeni nazw. Im bardziej zanieczyszczona jest twoja globalna przestrzeń nazw, tym większa szansa na kolizję funkcji / zmiennej. Oznacza to, że definiujesz funkcję o nazwie "foo", a inny programista definiuje funkcję "foo" = jedna z funkcji zostaje nadpisana.

Możesz uporządkować swój kod w oddzielne foldery i pliki, a requirejs ładuje je asynchronicznie, gdy zajdzie taka potrzeba, więc wszystko po prostu działa.

Możesz zbudować do produkcji. RequireJS jest dostarczane z własnym narzędziem do budowania o nazwie R.JS, które łączy i ugodzi twoje moduły javascript w jeden (lub wiele) pakietów. Spowoduje to zwiększenie szybkości strony, ponieważ użytkownik będzie musiał wykonywać mniej wywołań skryptów i ładować mniej treści (ponieważ Twój JS jest w brzydki sposób).

Możesz rzucić okiem na ten prosty projekt demonstracyjny: https://c9.io/peeter-tomberg/requirejs (w cloud9ide).

Aby zbudować moduły w jednej aplikacji, wystarczy zainstalować pakiet requirejs npm i uruchomić komendę: r.js -o build / build.properties.js

Jeśli są jakieś pytania, poproś o pomoc.

Edytować:

W rozwoju, posiadanie wszystkich modułów w oddzielnych plikach to po prostu dobry sposób na uporządkowanie kodu i zarządzanie nim. Pomaga również w debugowaniu (np. Błąd w "Module.js linii 17" zamiast "scripts.js wiersz 5373").

Do produkcji powinieneś użyć narzędzia do kompilacji, aby połączyć i ugnieść javascript do jednego pliku. Pomoże to szybciej załadować stronę, gdy wykonasz mniej zgłoszeń. Każda prośba o załadowanie czegoś spowalnia twoją stronę. Im wolniej Twoja strona, tym mniej punktów daje Google. Im wolniejsza strona, tym bardziej sfrustrowani będą Twoi użytkownicy. Im wolniej Twoja strona, tym mniej sprzedaży dostaniesz.

Jeśli chcesz przeczytać więcej o wydajności strony internetowej, spójrz na http://developer.yahoo.com/performance/rules.html 


11
2017-08-19 00:47



Dzięki, ponieważ jestem jedynym programistą i ryzyko nadpisania funkcji jest prawie niemożliwe (i nie rozumiem, jak requirejs może uniknąć kolizji) Jedyne, czego potrzebuję, to sposób na podzielenie mojego projektu na wiele plików i można to zrobić, po prostu łącząc je wszystkie w jednym pliku zachowując właściwą kolejność. Czy w tym przypadku przydatne mogą być requirewy lub podobne? - Matteo Pagliazzi
Widziałeś swój projekt, jaka jest różnica między dzieleniem projektu w wielu plikach, a następnie ładowaniem tylko jednego, który łączy wszystkie pozostałe w odpowiedniej kolejności i przy użyciu requirejs? - Matteo Pagliazzi
Czy mógłbyś przeformułować swoje pytanie, nie rozumiem tego. - Peeter
przepraszam, zobacz zaktualizowane pytanie - Matteo Pagliazzi
Zaktualizowałem moją odpowiedź - Peeter