TECH4GEEKS-LOGO-HEADER
Oxary Magazine
$10 – $15 / Week

WebAssembly para principiantes Parte 4: WebAssembly y JavaScript Companionship

En la Parte 4 de WebAssembly para principiantes, veremos de cerca cómo WebAssembly y JavaScript funcionan juntos.

Aquí aprenderá a usar WebAssembly en su JavaScript. Además, también exploraremos la API JavaScript de WebAssembly.

WebAssembly es un estándar abierto en formato binario que permite a los desarrolladores ejecutar aplicaciones con un rendimiento nativo en los navegadores. Si no lo ha leído, le sugerimos que consulte las partes anteriores de nuestra guía.

Empecemos.

Contenido del sitio

Usando WebAssembly con JavaScript

En nuestro tutorial de WebAssembly parte 1, explicamos cómo funciona WASM. Para escribir código de alto rendimiento para su aplicación web, debe usar funciones y API de WASM en JavaScript. También discutimos cómo los marcos de JavaScript podrían usar WASM para crear aplicaciones de alto rendimiento.

Sin embargo, actualmente no puede cargar módulos WASM como módulos ES6 usando el

ahora ve a para ver la salida.

Nota: La mayoría de los sistemas vienen preinstalados con Python. De lo contrario, puede instalarlo fácilmente antes de intentar ejecutar el servidor Python3.

Uso de la API de JavaScript para trabajar con WASM

Esta sección analizará más de cerca la API JavaScript de WASM. Con él aprenderemos a cargar código WASM y ejecutarlo. Pero primero, veamos el código a continuación.

fetch('hello-geekflare.wasm').then( response =>
   response.arrayBuffer())
   .then (bytes =>
       WebAssembly.instantiate(bytes))
       .then(result=>
           alert(result.instance.exports.answer()))

El código anterior utiliza las siguientes API de JavaScript.

  • buscar () API del navegador
  • WebAssembly.instantiate

Además de estos, hay otras API que vale la pena mencionar. Éstos incluyen:

  • WebAssembly.compile
  • WebAssembly.instancia
  • WebAssembly.instantiate
  • WebAssembly.instantiateStreaming

buscar () API del navegador

La API fetch() carga el recurso de red .wasm. Si intenta cargarlo localmente, debe deshabilitar el uso compartido de recursos de origen cruzado para cargar el recurso de red. De lo contrario, puede usar un servidor de nodos para que lo haga por usted. Para instalar y ejecutar un servidor de nodos, ejecute el siguiente comando.

sudo apt install npm

Luego ejecute el siguiente comando para ejecutar el servidor.

npx http-server -o
#Output

http-server version: 14.1.1

http-server settings: 
CORS: disabled
Cache: 3600 seconds
Connection Timeout: 120 seconds
Directory Listings: visible
AutoIndex: visible
Serve GZIP Files: false
Serve Brotli Files: false
Default File Extension: none

Available on:
  
  
Hit CTRL-C to stop the server
Open: 

[2023-01-28T19:22:21.137Z]  "GET /" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36 Edg/109.0.1518.70"
(node:37919) [DEP0066] DeprecationWarning: OutgoingMessage.prototype._headers is deprecated
(Use `node --trace-deprecation ...` to show where the warning was created)
[2023-01-28T19:22:21.369Z]  "GET /favicon.ico" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36 Edg/109.0.1518.70"
[2023-01-28T19:22:21.369Z]  "GET /favicon.ico" Error (404): "Not found"

Esto abrirá el navegador web donde podrá ver todos los archivos de su proyecto.

Ahora abra hello-geefklare.html y ejecute las herramientas de desarrollo web. Allí, abre la consola y escribe lo siguiente.

recuperar("hola-geekflare.wasm");

Devolverá la siguiente promesa.

#Output

Promise {<pending>}
[[Prototype]]: Promise
[[PromiseState]]: "fulfilled"
[[PromiseResult]]: Response
body: (...)
bodyUsed: false
headers: Headers {}
ok: true
redirected: false
status: 200
statusText: "OK"
type: "basic"
url: "/hello-geekflare.wasm"
[[Prototype]]: Response

También puede escribir el siguiente script y ejecutarlo a través de HTML.

Para ejecutar sus módulos wasm en el servidor, debe usar el siguiente código en Node.js.

const fs = require('fs');
const run = async() => {
   const buffer = fs.readFileSync("./hello-geekflare.wasm");
   const result = await WebAssembly.instantiate(buffer);
   console.log(result.instance.exports.answer());
};

run();

Sugerimos leer API de JavaScript de WebAssembly documentación para obtener más información.

JavaScript frente a ERA M

Para comprender la relación entre WASM y JavaScript, también debemos compararlos. Básicamente, WASM es más rápido y tiene un formato binario para la compilación de destino, mientras que JavaScript es un lenguaje de alto nivel. El código binario de WASM dificulta el aprendizaje, pero hay formas de trabajar de manera efectiva con WASM.

La principal diferencia entre WASM y JavaScript incluye lo siguiente:

  • WASM es un lenguaje compilado, mientras que JS es un lenguaje interpretado. El navegador debe descargar y analizar JavaScript en tiempo de ejecución, mientras que el código WASM está listo para ejecutarse con su código precompilado.
  • WebAssembly es un lenguaje de bajo nivel. Por otro lado, JavaScript es un lenguaje de alto nivel. Al ser de alto nivel, JS es fácil de usar. Sin embargo, al ser WASM de bajo nivel, puede ejecutarse mucho más rápido que JavaScript.
  • Finalmente, JavaScript se beneficia de su gran comunidad. Entonces, si está buscando una mejor experiencia de desarrollo, JS es una opción obvia. WebAssembly, por otro lado, es relativamente nuevo y, por lo tanto, carece de recursos.

Como desarrollador, no tiene que preocuparse por elegir uno. De hecho, JS y WASM trabajan juntos y no uno contra el otro.

Por lo tanto, si está escribiendo una aplicación de alto rendimiento, es posible que desee utilizar WebAssembly para codificar solo las partes que necesitan rendimiento. La API de JavaScript puede ayudarlo a recuperar y usar módulos WASM directamente en su código JavaScript.

Pensamientos finales

Con todo, WebAssembly es un gran compañero para JavaScript. Invita a los desarrolladores a crear aplicaciones de alto rendimiento en la web y fuera de la web. Además, hace esto sin intentar reemplazar JavaScript.

Sin embargo, ¿WASM se convertirá en un paquete completo y reemplazará a JavaScript? Bueno, eso es probablemente imposible, dados los objetivos de WebAssembly. Sin embargo, la idea de que WebAssembly reemplace a JavaScript en el futuro no es del todo refutable.

A continuación, conozca las mejores bibliotecas de interfaz de usuario de JavaScript (JS) para crear aplicaciones modernas.

Fuente

  Cómo usar la función NumPy argmax() en Python

Etiquetas

Comparte en:

Ultimos Post

Categorias

Lorem ipsum dolor sit amet, consectetur adipiscing elit eiusmod tempor ncididunt ut labore et dolore magna

Deja una respuesta

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore