Полифиллы — не надо меня просто ненавидеть, но без них жить нельзя. Большая проблема — знать, когда они вам нужны. Теперь есть решение, которое каждый раз делает это правильно.
Если вы упустили из виду, что такое полифилл, я должен объяснить. JavaScript — очень мощный язык, и когда кто-то изобретает какую-то новую функцию, обычно можно реализовать новую функцию, используя существующий язык — полифил. Идея состоит в том, что браузеры, поддерживающие новую функцию, не нуждаются в полифилле, но браузеры, которые этого не делают, по-прежнему могут запускать ваш новый обновленный код с помощью полифилла. Это может быть не так эффективно, как нативная реализация, но позволяет новой функции работать везде.
Проблема в том, когда нужен полифилл и, возможно, даже какая версия полифила нужна. Часто вы можете запустить полифилл, когда в этом нет необходимости.
Вот что предлагает команда Financial Times в качестве решения:
Разработчики вставляют на свою страницу тег скрипта, который загружает конечную точку службы полифилла.
Служба анализирует заголовок пользовательского агента браузера и список запрошенных функций (или использует список по умолчанию для всего, что можно полифиллировать) и строит список полифиллов, необходимых для этого браузера.
Полифиллы упорядочиваются с помощью сортировки графа, чтобы разместить их в правильном порядке зависимости.
Пакет минифицирован и обслуживается через CDN.
Например, если вам нужен только полифилл Array.from, вы должны включить тег скрипта, например:
Конечно, вы можете добавить дополнительные полифиллы, которые вам нужны после features =.
Существует матрица функций, которую вы можете использовать, чтобы узнать, какие полифиллы поддерживаются и в каких браузерах. Вы можете быть немного обеспокоены тем, что этот подход, похоже, вернулся к черному искусству обнюхивания пользовательских агентов, а не к обнаружению функций, но в этом случае рассуждения хорошие. Браузеры различаются полнотой поддержки различных новых функций, и только проверив, в каком браузере выполняется код, можно определить правильный полифилл.
Теперь мы подошли к самому удивительному.
Этот сервис работает, и вы можете начать им пользоваться прямо сейчас. Лаборатория Financial Times создала необходимый код на стороне сервера, и Fastly бесплатно размещает его в качестве всемирного CDN.
Код имеет открытый исходный код и доступен на GitHub, поэтому вы можете просмотреть его, изменить и, конечно же, запустить свой собственный сервер, если хотите. Команде также нужно больше полифилов и больше тестов, чтобы определить, какой полифил использовать, так что не стесняйтесь вносить свой вклад. Более того, если вы получите запрос на перенос в репозиторий, FT предоставит вам месячный премиум-доступ ко всему контенту FT — для меня это звучит как заманчивая взятка!