2015-09-27 28 views
7

Buduję stronę internetową, która moja grupa docelowa jest bardzo ogólna (w wieku 13-oo, więc cześć IE9, witam starą przeglądarkę dla Androida), więc potrzebuję polyfills dla niektórych rzeczy (viewport, calc itp). Zanim użyłem Modernizr i niektórych agentów użytkownika warunkowego do kierowania na IOS 6-7 itd. Następnie za pomocą yepnope.js ładowałem określone polyfills.Warunkowo załadowane polyfills

Po aktualizacji 3.0 jest zauważyłem, że Modernizr.load() jest przestarzałe. Również biblioteka yepnope.js jest przestarzała. Jak mówią na ich stronie

„Są nowe najlepsze praktyki, które należy przestrzegać prawdopodobnie zamiast”.

Ale nie mogę znaleźć żadnego z nich. Po starcie przez jakiś czas wszyscy polecają Modernizr i Yepnope. Ale ten problem jest tak świeży (wycofanie, nowa wersja Modernizr) i nie mogę znaleźć żadnej nowej alternatywnej metody.

Może przy użyciu niektórych modułów loader (jak require.js) będzie wykonywać zadanie? A jeśli tak, to w jaki sposób?

+0

Zazwyczaj testy polyfill dla istniejącej metody przed dodaniem własnej. Są one zwykle na tyle małe, że możesz je wrzucić, niezależnie od tego, czy masz pewność, że ich potrzebujesz, czy nie. – Blazemonger

+0

Dziękuję za odpowiedź. Ale jeśli chcę wielu wielozadaniowych, dlaczego należy tworzyć wiele żądań http? Lub łącząc i ugniatając pliki js, dlaczego zwiększyć rozmiar? –

Odpowiedz

1

z yepnope repo

Jeśli chodzi o ładowanie rzeczy warunkowo, sugerujemy wyjście kompilacji dla każdej kombinacji rzeczy testujesz. Ten może brzmieć tak, jakby wygenerował wiele plików (może), ale komputery są w tym całkiem dobre. Następnie możesz wstawić skrypt do swojej strony, która tylko ładuje (asynchronicznie!) Pojedynczy zbudowany skrypt, który jest dostrojony do funkcji tego użytkownika. Wszystkie wygrane wydajności z obciążeniem warunkowym i żadnymi problemami związanymi z opóźnieniem ładowania rzeczy od razu do 100 .

+0

Tak, już widziałem to w repozytorium yepnope. Tak więc zalecaną metodą jest utworzenie skryptu z warunkami i załadowanie go asynchronicznie. Ale przy tych polyfillach skrypt będzie działał! Może dobrą metodą będzie zaimportowanie plików js na warunkowych? –

+0

skrypt nie będzie większy niż byłby przez załadowanie go przez yepnope. Powinien postawić taką samą treść. Importowanie plików js za pośrednictwem warunków warunkowych jest dokładnie tym, co zrobił yepnope. – Patrick

3

Utrzymuję usługę polyfill pod numerem https://cdn.polyfill.io, która może spełnić Twoje potrzeby. Mamy bibliotekę około 800 polyfills, które są pakowane selektywnie i podawane tylko użytkownikom, którzy ich potrzebują. Możesz uruchomić usługę samodzielnie lub po prostu załadować polyfills z naszego CDN.

+0

To fantastyczna usługa - dzięki @Andrew! – Guy

2

Najbardziej wszechstronną recenzją, jaką widziałem w tej technice, jest praca Philipa Waltona Loading Polyfills Only When Needed. Zbyt długie cytowanie tutaj jakichkolwiek części powinno być przeczytane w całości, więc nie będę kopiować/wklejać sekcji w tej odpowiedzi.