Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия |
software:development:web:docs:webassembly [2024/02/27 13:32] – vladpolskiy | software:development:web:docs:webassembly [2024/02/27 17:31] (текущий) – [Ссылки и Дополнения] vladpolskiy |
---|
| |
WebAssembly предназначен для дополнения и работы вместе с JavaScript — с помощью API-интерфейсов JavaScript WebAssembly вы можете загружать модули WebAssembly в приложение JavaScript и совместно использовать функциональность между ними. Это позволяет вам воспользоваться преимуществами производительности и мощи WebAssembly, а также выразительности и гибкости JavaScript в одних и тех же приложениях, даже если вы не знаете, как писать код WebAssembly. | WebAssembly предназначен для дополнения и работы вместе с JavaScript — с помощью API-интерфейсов JavaScript WebAssembly вы можете загружать модули WebAssembly в приложение JavaScript и совместно использовать функциональность между ними. Это позволяет вам воспользоваться преимуществами производительности и мощи WebAssembly, а также выразительности и гибкости JavaScript в одних и тех же приложениях, даже если вы не знаете, как писать код WebAssembly. |
| |
| И что еще лучше, он разрабатывается как веб-стандарт через [[https://www.w3.org/wasm/|рабочую группу W3C WebAssembly]] и [[https://www.w3.org/community/webassembly/|группу сообщества]] при активном участии всех основных поставщиков браузеров. |
| |
| =====Путеводители===== |
| |
| |
| {{:software:development:web:book_icon_left.png?32|}}**[[software:development:web:docs:webassembly:concepts| Концепции веб-сборки ]]** |
| |
| Начните с прочтения общих концепций, лежащих в основе WebAssembly — что это такое, почему это так полезно, как оно вписывается в веб-платформу (и за ее пределами) и как ее использовать. |
| |
| {{:software:development:web:book_icon_left.png?32|}}**[[software:development:web:docs:webassembly:c_to_wasm-2| Компиляция нового модуля C/C++ в WebAssembly ]]** |
| |
| Написав код на C/C++, вы можете затем скомпилировать его в Wasm с помощью такого инструмента, как [[https://emscripten.org/|Emscripten]] . Давайте посмотрим, как это работает. |
| |
| {{:software:development:web:book_icon_left.png?32|}}**[[software:development:web:docs:webassembly:existing_c_to_wasm| Компиляция существующего модуля C в WebAssembly ]]** |
| |
| Основной вариант использования WebAssembly — взять существующую экосистему библиотек C и позволить разработчикам использовать их в Интернете. |
| |
| {{:software:development:web:book_icon_left.png?32|}}**[[software:development:web:docs:webassembly:rust_to_wasm-2| Компиляция из Rust в WebAssembly ]]** |
| |
| Если вы написали код на Rust, вы можете скомпилировать его в WebAssembly! В этом руководстве вы узнаете все, что вам нужно знать, чтобы скомпилировать проект Rust в Wasm и использовать его в существующем веб-приложении. |
| |
| {{:software:development:web:book_icon_left.png?32|}}**[[software:development:web:docs:webassembly:loading_and_running| Загрузка и запуск кода WebAssembly ]]** |
| |
| Если у вас есть модуль Wasm, в этой статье рассказывается, как его получить, скомпилировать и создать экземпляр, сочетая API [[software:development:web:docs:webassembly:javascript_interface|JavaScript WebAssembly]] с API-интерфейсами [[software:development:web:docs:web:api:Fetch_API|Fetch]] или [[software:development:web:docs:web:api:XMLHttpRequest|XHR]]. |
| |
| {{:software:development:web:book_icon_left.png?32|}}**[[software:development:web:docs:webassembly:Using_the_JavaScript_API| Использование API JavaScript WebAssembly ]]** |
| |
| Загрузив модуль Wasm, вы захотите его использовать. В этой статье мы покажем вам, как использовать WebAssembly через API JavaScript WebAssembly. |
| |
| {{:software:development:web:book_icon_left.png?32|}}**[[software:development:web:docs:webassembly:Exported_functions| Экспортированные функции WebAssembly ]]** |
| |
| Экспортированные функции WebAssembly — это отражения функций WebAssembly в JavaScript, которые позволяют вызывать код WebAssembly из JavaScript. В этой статье описывается, что они из себя представляют. |
| |
| {{:software:development:web:book_icon_left.png?32|}}**[[software:development:web:docs:webassembly:Understanding_the_text_format| Понимание текстового формата WebAssembly ]]** |
| |
| В этой статье объясняется текстовый формат Wasm. Это низкоуровневое текстовое представление модуля Wasm, отображаемое в инструментах разработчика браузера при отладке. |
| |
| {{:software:development:web:book_icon_left.png?32|}}**[[software:development:web:docs:webassembly:Text_format_to_Wasm-2| Преобразование текстового формата WebAssembly в Wasm ]]** |
| |
| В этой статье представлено руководство по преобразованию модуля WebAssembly, написанного в текстовом формате, в двоичный файл Wasm. |
| |
| =====Справочник по API===== |
| |
| {{:software:development:web:book_icon_left.png?32|}}**[[software:development:web:docs:webassembly:Reference| Справочник инструкций WebAssembly ]]** |
| |
| Справочная документация с интерактивными примерами набора операторов WebAssembly. |
| |
| {{:software:development:web:book_icon_left.png?32|}}**[[software:development:web:docs:webassembly:JavaScript_interface| JavaScript-интерфейс WebAssembly ]]** |
| |
| Этот объект действует как пространство имен для всех функций, связанных с WebAssembly. |
| |
| [[software:development:web:docs:webassembly:JavaScript_interface:Global| WebAssembly.Global() ]]\\ |
| Объект **WebAssembly.Global** представляет собой экземпляр глобальной переменной, доступный как из **JavaScript**, так и импортируемый/экспортируемый в один или несколько [[software:development:web:docs:webassembly:JavaScript_interface:Module|WebAssembly.Module]] экземпляров. Это позволяет динамически связывать несколько модулей. |
| |
| [[software:development:web:docs:webassembly:JavaScript_interface:Module| WebAssembly.Module() ]]\\ |
| Объект **WebAssembly.Module** содержит код **WebAssembly** без сохранения состояния, который уже скомпилирован браузером и может эффективно [[software:development:web:docs:web:api:Worker:postMessage|использоваться совместно с Workers]] и создаваться несколько раз. |
| |
| [[software:development:web:docs:webassembly:JavaScript_interface:Instance| WebAssembly.Instance() ]]\\ |
| Объект **WebAssembly.Instance** — это исполняемый экземпляр файла **Module.Instance** объекты содержат все [[software:development:web:docs:WebAssembly:Exported_functions|экспортированные функции WebAssembly]], которые позволяют вызывать код **WebAssembly** из **JavaScript**. |
| |
| [[software:development:web:docs:webassembly:JavaScript_interface:compile| WebAssembly.compile() ]]\\ |
| Функция **WebAssembly.compile()** компилирует двоичный код **WebAssembly** в **WebAssembly.Module** объект. |
| |
| [[software:development:web:docs:webassembly:JavaScript_interface:compileStreaming| WebAssembly.compileStreaming() ]]\\ |
| Функция **WebAssembly.compileStreaming()** компилирует **WebAssembly.Module** непосредственно из потокового базового источника. |
| |
| [[software:development:web:docs:webassembly:JavaScript_interface:instantiate| WebAssembly.instantiate() ]]\\ |
| Функция **WebAssembly.instantiate()** позволяет компилировать и создавать экземпляры кода **WebAssembly**. |
| |
| [[software:development:web:docs:webassembly:JavaScript_interface:instantiateStreaming| WebAssembly.instantiateStreaming() ]]\\ |
| Функция **WebAssembly.instantiateStreaming()** является основным **API** для компиляции и создания экземпляра кода **WebAssembly**, возвращая как a, **Module** так и его первый файл **Instance**. |
| |
| [[software:development:web:docs:webassembly:JavaScript_interface:validate| WebAssembly.validate() ]]\\ |
| Функция **WebAssembly.validate()** проверяет заданный типизированный массив двоичного кода **WebAssembly**. |
| |
| [[software:development:web:docs:webassembly:JavaScript_interface:Memory| WebAssembly.Memory() ]]\\ |
| Объект **WebAssembly.Memory** — это объект изменяемого размера **ArrayBuffer**, который содержит необработанные байты памяти, к которым обращается объект **Instance**. |
| |
| [[software:development:web:docs:webassembly:JavaScript_interface:Table| WebAssembly.Table() ]]\\ |
| Объект **WebAssembly.Table** представляет собой типизированный массив изменяемого размера непрозрачных значений, таких как ссылки на функции, к которым обращается объект **Instance**. |
| |
| [[software:development:web:docs:webassembly:JavaScript_interface:Tag| WebAssembly.Tag() ]]\\ |
| Объект **WebAssembly.Tag** определяет тип исключения **WebAssembly**, которое может быть выброшено в код **WebAssembly** или из него. |
| |
| [[software:development:web:docs:webassembly:JavaScript_interface:Exception| WebAssembly.Exception() ]]\\ |
| Объект **WebAssembly.Exception** представляет собой исключение во время выполнения, генерируемое из **WebAssembly** в **JavaScript** или генерируемое из **JavaScript** в обработчик исключений **WebAssembly**. |
| |
| [[software:development:web:docs:webassembly:JavaScript_interface:CompileError| WebAssembly.CompileError() ]]\\ |
| Создает новый **CompileError** объект **WebAssembly**. |
| |
| [[software:development:web:docs:webassembly:JavaScript_interface:LinkError| WebAssembly.LinkError() ]]\\ |
| Создает новый **LinkError** объект **WebAssembly**. |
| |
| [[software:development:web:docs:webassembly:JavaScript_interface:RuntimeError| WebAssembly.RuntimeError() ]]\\ |
| Создает новый **RuntimeError** объект **WebAssembly**. |
| |
| =====Ссылки и Дополнения===== |
| * [[https://ru.wikipedia.org/wiki/WebAssembly|О WebAssembly]] |
| * [[https://webassembly.org/|webassembly.org]] |
| * [[https://www.w3.org/community/webassembly/|W3C WebAssembly Community Group]] |
| * [[https://web.dev/articles/emscripting-a-c-library|Emscripting a C Library to Wasm]] |
| * [[https://github.com/JasonWeathersby/WASMSobel|WASMSobel]] |
| * См. MDN репозиторий [[https://github.com/mdn/webassembly-examples/|webassembly-examples]] для получения ряда других примеров. |
| * См. wiki репозиторий [[https://gitlab.book51.ru/wiki/webassembly-examples.git|webassembly-examples]] для получения ряда других примеров. |
| * {{ :software:development:web:docs:webassembly-examples-main.zip |Загрузить примеры веб-сборки}} |