MDN wants to learn about developers like you: https://qsurvey.mozilla.com/s3/MDN-dev-survey

Перевод не завершен. Пожалуйста, помогите перевести эту статью с английского.

Это экспериментальная технология
Так как спецификация этой технологии ещё не стабилизировалась, смотрите таблицу совместимости по поводу использования в различных браузерах. Также заметьте, что синтаксис и поведение экспериментальной технологии может измениться в будущих версиях браузеров, вслед за изменениями спецификации.

Объект JavaScript WebAssembly действует как пространство имен для всего WebAssembly-связанного функционала.

В отличие от большинства других глобальных объектов, WebAssembly не является конструктором (это не объект функции). Можно сравнить его с Math, который так же является пространством имен констант и функций, или  Intl, который является пространством имен для конструкторов интернационализации и других языково-чувствительных функций.

Описани

Основное использование WebAssembly следующее:

Методы

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.

Примеры

После загрузки некоторого байт-кода WebAssembly с помощью fetch, мы компилируем и создаем экземпляр модуля с помощью функции WebAssembly.instantiate(), импортируя функции JavaScript в WebAssembly Module в процессе. Этот промис результирует в объект (result), содержащий скомпилированные Module и объекты Instance. Мы можем вызвать Exported WebAssembly function, которая была экспортирована через Instance.

var importObject = {
  imports: {
    imported_func: function(arg) {
      console.log(arg);
    }
  }
};

fetch('simple.wasm').then(response =>
  response.arrayBuffer()
).then(bytes =>
  WebAssembly.instantiate(bytes, importObject)
).then(result =>
  result.instance.exports.exported_func()
);

Note: See index.html on GitHub (view it live also) for an example that makes use of our fetchAndInstantiate() library function.

Спецификации

Specification Status Comment
Web Assembly JavaScript API
Определение 'WebAssembly' в этой спецификации.
Черновик Initial draft definition.

Поддержка браузерами

Feature Chrome Edge Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
Basic support 57 15[2] 52 (52)[1] Нет 44 11
Feature Chrome for Android Android Webview Edge Mobile Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Basic support 57 57 Нет 52.0 (52)[1] Нет Нет 11

[1] WebAssembly is enabled in Firefox 52+, although disabled in the Firefox 52 Extended Support Release (ESR.)

[2] Currently supported behind the “Experimental JavaScript Features” flag. See this blog post for more details.

Смотри также

Метки документа и участники

 Внесли вклад в эту страницу: curdwithraisins
 Обновлялась последний раз: curdwithraisins,