Одна из проблем JavaScript заключается в том, что нет стандартной библиотеки, как в других языках. Это означает, что мы должны скачивать все, что нам нужно, а не только «дополнительные услуги». Все скоро изменится с предложением включить в браузеры модули JavaScript без их загрузки.
Трудно сказать, является ли это предложение, сделанное Ecma TC39, комитетом, развивающим JavaScript, хорошей идеей или нет. Идея стандартной библиотеки для JavaScript привлекательна, но преимущество наличия встроенных модулей не так очевидно. В предложении говорится:
«С введением стандартной библиотеки разработчики получат четко определенный API, который не нужно включать в их страницы или приложение. Функциональные возможности стандартной библиотеки пройдут путь стандартизации и будут иметь четко определенные API и поведение.»
По идее, встроенные модули будут похожи на обычные модули, но всегда доступны. Однако преимущество этого не так однозначно, как кажется. Возможно, было бы лучше иметь модули, которые загружаются и используются всеми веб-страницами или приложениями. Другими словами, вместо того, чтобы встраивать их, браузеры должны реализовать более интеллектуальный кеш для совместного использования общих стандартных модулей.
Чтобы сгладить любой переход, существуют карты импорта, которые говорят браузеру игнорировать загрузку библиотеки, если она доступна как встроенная. Это почти необходимый механизм кеширования. Если браузер не поддерживает модули, а 80% поддерживают, то вам нужно вернуться к загрузке кода обычным способом.
Конечно, существует большая проблема с определением того, что входит в стандартную библиотеку. Преимущество стандартной библиотеки, спросите любого программиста на C или Python, состоит в том, что объекты в библиотеке быстро становятся частью языка. Это позволяет сообществу работать как единое целое. Например, в настоящее время, если вы спросите, как что-то сделать, вы получите множество ответов о том, как это сделать с помощью jQuery или собственного JavaScript. Предложение, похоже, не предусматривает включения вещей, специфичных для среды, в которой выполняется код:
«Такая библиотека будет охватывать только те функции, которые были бы полезны в JavaScript в целом, а не вещи, которые привязаны к веб-платформе. (Хорошая эвристика: если что-то будет иметь смысл в веб-браузере, но не в узле или на встроенных устройствах или роботов, вероятно, это не входит в сферу охвата.) »
Предложение находится на ранней стадии, но Google уже создал первый встроенный модуль для Chrome — KV Storage. Это простая библиотека, которая предоставляет механизм хранения ключей / значений в качестве альтернативы localStorage или indexedDB, оба из которых имеют проблемы. На данный момент это всего лишь эксперимент, но в Chrome есть встроенная поддержка модулей. Если вы хотите попробовать, вам понадобится Chrome 74, и вам нужно включить флаг экспериментальных функций веб-платформы.
Хотя Google играет ведущую роль, это, похоже, действительно попытка установить стандарт, а не поглощение или функция, которая делает Chrome лучше, чем его конкуренты.
Ян Эллиот — автор книги «Просто JavaScript: идиоматический подход»; JavaScript Async; Просто jQuery: Core UI и Just jQuery: Events, Async & AJAX, которые являются частью библиотеки I Programmer Library, опубликованной I / O Press.