Для JavaScript не существует универсального байт-кода, но у большинства движков JavaScript есть собственный байт-код. Поскольку файлы JavaScript передаются как строка исходного кода, они должны анализировать/компилировать строку исходного кода в байт-код перед выполнением.
Однако, поскольку мы можем указать тип пользовательского агента (например, тип и версию браузера) в HTTP-запросе, не можем ли мы заставить сервер хранить байт-код для каждого браузера и отвечать соответствующим образом, чтобы сэкономить время на клиенте?
Что мешает нам использовать этот подход? Я не думаю, что у браузеров не возникнет проблем, даже если некоторые файлы JavaScript будут представлены в байт-коде, а другие — в исходной строке. Точно так же у нас есть файлы .pyc в Python, и он хорошо работает с файлами .py.
[Обновление] Возможные преимущества, о которых я думаю, перечислены ниже.
- Вы можете сэкономить время анализа на клиенте. Синтаксический анализ выполняется быстро, но, возможно, его стоит сделать для слабых устройств.
- Вы можете поместить некоторые подсказки в байт-код. Например, JavaScriptCore (движок JavaScript WebKit, сокращенно АО) исправляет байт-код информацией, собранной во время выполнения, такой как типы. Байт-код АО разработан таким образом, что в нем есть слоты для такой информации.
С точки зрения ремонтопригодности сервер всегда может отправить исходную строку исходного кода, если браузер клиента не поддерживается, а различных движков JavaScript не так много. Поддержка четырех самых популярных браузеров (Chrome, Firefox, IE и Safari) кажется мне осуществимой. Кроме того, я не вижу частого изменения набора инструкций байт-кода.