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.
* Some parts of this feature may have varying levels of support.
Экспериментальная возможность:Это экспериментальная технология
Так как спецификация этой технологии ещё не стабилизировалась, смотрите таблицу совместимости по поводу использования в различных браузерах. Также заметьте, что синтаксис и поведение экспериментальной технологии может измениться в будущих версиях браузеров, вслед за изменениями спецификации.
Объект 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 |
Совместимость с браузерами
Смотрите также
- WebAssembly обзорная страница
- WebAssembly концепции
- Использование WebAssembly JavaScript API