WebAssembly
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since October 2017.
Экспериментальная возможность: Это экспериментальная технология
Так как спецификация этой технологии ещё не стабилизировалась, смотрите таблицу совместимости по поводу использования в различных браузерах. Также заметьте, что синтаксис и поведение экспериментальной технологии может измениться в будущих версиях браузеров, вслед за изменениями спецификации.
Объект JavaScript WebAssembly
действует как пространство имён для всего WebAssembly-связанной функциональности.
В отличие от большинства других глобальных объектов, WebAssembly
не является конструктором (это не объект функции). Можно сравнить его с Math
, который так же является пространством имён констант и функций, или Intl
, который является пространством имён для конструкторов интернационализации и других языково-чувствительных функций.
Описание
Основное использование WebAssembly
следующее:
- Загрузка кода WebAssembly, с помощью функции
WebAssembly.instantiate()
. - Создание новой памяти и таблицы экземпляров с помощью конструкторов
WebAssembly.Memory()
/WebAssembly.Table()
. - Обеспечение возможности управлять ошибками, которые появляются в WebAssembly с помощью конструкторов
WebAssembly.CompileError()
/WebAssembly.LinkError()
/WebAssembly.RuntimeError()
.
Методы
WebAssembly.instantiate()
-
Основное API для компиляции и создания экземпляра кода WebAssembly, возвращающее
Module
и его первыйInstance
. WebAssembly.compile()
-
Компилирует
WebAssembly.Module
из бинарного кода WebAssembly, оставляя создание экземпляра отдельным шагом. WebAssembly.validate()
-
Проверяет представленный типизированный массив бинарного кода WebAssembly, возвращая в зависимости от того были ли байты кода WebAssembly валидны (
true
) или (false
).
Конструкторы
WebAssembly.Module()
-
Создаёт новый объект WebAssembly
Module
. WebAssembly.Instance()
-
Создаёт новый объект WebAssembly
Instance
. WebAssembly.Memory()
-
Создаёт новый объект WebAssembly
Memory
. WebAssembly.Table()
-
Создаёт новый объект WebAssembly
Table
. WebAssembly.CompileError()
-
Создаёт новый объект WebAssembly
CompileError
. WebAssembly.LinkError()
-
Создаёт новый объект WebAssembly
LinkError
. WebAssembly.RuntimeError()
-
Создаёт новый объект WebAssembly
RuntimeError
.
Примеры
Смотрите пример instantiate-streaming.html на GitHub (демо).
const importObject = {
my_namespace: { imported_func: (arg) => console.log(arg) },
};
WebAssembly.instantiateStreaming(fetch("simple.wasm"), importObject).then(
(obj) => obj.instance.exports.exported_func(),
);
Потом осуществляется доступ к свойству .instance
объекта ResultObject
и вызывается содержащаяся в нём экспортированная функция.
Спецификации
Specification |
---|
WebAssembly JavaScript Interface # webassembly-namespace |
Совместимость с браузерами
BCD tables only load in the browser
Смотрите также
- WebAssembly обзорная страница
- WebAssembly концепции
- Использование WebAssembly JavaScript API