Вас интересовали ключевые концепции и варианты использования VASM? Если нет, мы вас прикроем.
WebAssembly (VASM) — это новый низкоуровневый язык, который позволяет вам добиться в Интернете производительности, близкой к нативной.
В WebAssembly для начинающих — часть 1 мы представили VASM с точки зрения новичка, охватив его определение и ограничения. Кроме того, мы рассмотрели функции WebAssembly, дорожную карту VASM и то, как JavaScript работает с WebAssembly, а не против него.
В этом посте мы рассмотрим WebAssembly, рассмотрев цели, ключевые концепции и варианты использования VASM. Мы также рассмотрим некоторые из его интересных проектов.
Давайте начнем.
Содержание
Цели WebAssembly
Чтобы понять ключевые концепции WebAssembly, нам сначала нужно взглянуть на его цели. Эти цели включают в себя:
- Возможность использовать преимущества доступного оборудования, используя в качестве цели компиляции эффективный по времени загрузки и размеру двоичный формат. Проще говоря, VASM использует абстрактное синтаксическое дерево (AST) в двоичном формате, поддерживая собственную скорость компиляции и выполнения. Используя этот подход, VASM может работать на различных устройствах, включая IoT, Интернет и мобильные устройства.
- Целью VASM не является модификация или изменение существующей веб-платформы. При таком подходе WebAssembly может хорошо интегрироваться с текущим и прошлым Web. Это также позволяет WebAssembly беспрепятственно работать с JavaScript, включая параллельное выполнение или выполнение синхронных вызовов из JavaScript.
- Для бесперебойной работы с политиками безопасности разрешений и тем же источником.
- Убедитесь, что разработчики могут проектировать свои решения для поддержки встраивания вне браузера.
- В конечном счете, предоставление разработчикам инструментов для эффективной работы с исходным кодом WebAssembly за счет предоставления редактируемого текстового формата.
Ключевые понятия WebAssembly
Под капотом WebAssembly следует следующим шагам:
- Во-первых, вы должны писать код на статически типизированном языке с определенными типами.
- Когда вы закончите, вы создадите предварительно скомпилированный модуль VASM и передадите код машинному компилятору.
- Вышеупомянутый шаг гарантирует, что VASM пропустит синтаксический анализ и подготовит код для отображения в веб-браузере.
Ключевые концепции запуска WebAssembly в веб-браузере включают:
- Память: Память в WebAssembly управляется и записывается с помощью низкоуровневых инструкций доступа к памяти. Технически это изменяемый ArrayBuffer, который содержит массив байтов памяти.
- Модуль: Модуль в WebAssembly представляет собой скомпилированный исполняемый компьютерный код. Из-за своей формы без сохранения состояния веб-браузер компилирует модуль и делится им между Windows и рабочими процессами. Кроме того, модуль хранит и объявляет импорт и экспорт в дополнение к функциям, таблицам, типам, глобальным значениям и памяти.
- Таблица: таблица состоит из всех ссылок и функций, использующих массив изменяемых типов. Это устраняет необходимость хранить необработанные байты в памяти.
- Экземпляр: в VASM экземпляр представляет собой модуль среды выполнения со всеми сопоставленными состояниями. Эти состояния включают таблицу, память и другие импортированные наборы значений.
Ключевые концепции VASM
Как веб-разработчик, вы можете использовать JavaScript API для вызова и определения модулей, таблиц, экземпляров и таблиц. Кроме того, используйте JavaScript для синхронного вызова экспорта VASM в функциях JavaScript. Таким образом, JavaScript хорошо сочетается с WebAssembly, поскольку вы можете использовать VASM для написания высокопроизводительных приложений в веб-браузере.
Объекты VASM
При работе с WebAssembly необходимо отслеживать восемь объектов VASM. Эти объекты включают в себя:
- WebAssembly.Global — глобальный объект — это экземпляр глобальной переменной. Он доступен через WebAssembly.Module и JavaScript.
- WebAssembly.Module — здесь объект модуля содержит код VASM без сохранения состояния. Код предварительно скомпилирован.
- WebAssembly.Instance — WebAssembly.Instance — это исполняемый экземпляр WebAssembly.Module с отслеживанием состояния.
- WebAssembly.Table — объект Table содержит ссылки на функции и действует как оболочка JavaScript.
- WebAssembly.CompileError — объект CompileError содержит все ошибки во время проверки и декодирования.
- WebAssembly.RuntimeError — здесь объект RuntimeError перечисляет все ошибки времени выполнения.
- WebAssembly.LinkError — объект LinkError содержит ошибки, возникающие при создании экземпляра модуля.
Варианты использования и проекты VASM
Мы уже знаем, что WebAssembly предлагает нативную производительность в веб-браузере. Однако, чтобы действительно понять, где вы можете его использовать, вам нужно взглянуть на его варианты использования. Давайте перечислим некоторые варианты использования VASM ниже.
Сценарии использования WebAssembly включают как работу в браузере, так и вне браузера. Например, если вы хотите использовать VASM в браузере, вы можете сделать многое, в том числе:
- Редактирование видео или аудио, например проект ffmpegvasm.
- Видеоигры в веб-браузере, такие как эти высокопроизводительные игры.
- Научная визуализация и моделирование
- Эмуляция/моделирование платформ, таких как DOSBox, MAME и т. д.
- Шифрование
- Удаленного рабочего стола
- Инструменты разработчика
Случаи использования
С общей точки зрения, привлекательные варианты использования WebAssembly включают
- Возможность писать более быстрый код может использовать преимущества базового оборудования.
- Кроме того, вы также можете выполнять сжатие на стороне клиента, что приводит к сокращению времени загрузки и экономии полосы пропускания. Таким образом, вы используете ЦП клиента или базовое оборудование для сжатия и распаковки, а затем используете ресурсы сервера.
- Кроме того, вы можете использовать разные языки программирования для написания кода для Интернета, а не только JavaScript. Например, вы можете использовать Rust, C и C++ для написания высокопроизводительного кода для определенных аспектов ваших веб-приложений.
Проекты
Переходя к реальным примерам, стоит упомянуть следующие проекты.
- Figma улучшила производительность своего веб-приложения с помощью WebAssembly. Они сократили время загрузки во время инициализации приложения, рендеринга всего дизайна и даже загрузки файла дизайна. Как мы обсуждали ранее, WebAssembly также отлично подходит для сжатия. Figma внедрила VASM, чтобы улучшить размеры загрузки, значительно уменьшив их.
- Piodide: Еще один интересный проект VASM — проект Piodide, опубликованный Mozilla. Это позволяет ученым компилировать научный пакет Python в WebAssembly, включая NumPi, SciPi, Scikit-learn и т. д., в браузер. Он предлагает прозрачное преобразование объектов между Python и JavaScript. Наконец, он также позволяет разработчикам использовать веб-API с помощью Python.
- Brazor WebAssembly: платформа Brazor WebAssembly позволяет разработчикам создавать одностраничные, клиентские и интерактивные веб-приложения с помощью .NET. Вы можете разместить эти приложения в браузере, используя среду выполнения .NET на основе WebAssembly. Здесь, как разработчик, вы получаете доступ к функциям браузера в своем коде .NET с помощью JavaScript API WebAssembly.
Источник: Фигма
Многие другие известные и ценные проекты используют WebAssembly. Это Binarien, Cheerp, Forest, Grain и другие.
Последние мысли
WebAssembly не очень удобен для начинающих. Однако, изучив его варианты использования и ключевые концепции, вы сможете четко понять его возможности.
Сейчас на рынке есть интересные проекты, и сейчас самое подходящее время для изучения WebAssembly, особенно если вы занимаетесь веб-разработкой. Способность VASM работать вне браузера также делает его отличным выбором для разработки, ориентированной на производительность.
Вам понравилось читать статью? Как насчет того, чтобы поделиться этим с миром?