Es muy interesante porque hubo un artículo hace solo un par de días diciendo que, sabes, los teléfonos antiguos que descartamos porque ni siquiera nos gustan y hay nuevos que están saliendo, simplemente no desaparecen. Terminan pasando por tres generaciones. Así que terminas, tal vez, sabes, segunda generación, tercera generación, todavía se están utilizando. Y si estás usando una aplicación pesada hoy en día, esto será simplemente una experiencia horrible.
Así que tal vez para desglosarlo realmente en partes estratégicas. Entonces, si tienes una aplicación antigua y quieres que sea rápida y te das cuenta de que tienes algunos problemas con el hilo, ¿cómo decides qué debe ir en WebWorker, qué debe ir en Worklet, qué debe ir en WebAssembly? ¿Cuál es tu estrategia? Sí, esta es una pregunta muy, muy buena. A menudo me hacen esta pregunta. Es un poco amplia para responder, sin embargo, pero trato de simplificarla un poco y responderla. Entonces, lo que suelo hacer, solo doy mi experiencia personal, es que, como dijiste, trato de ejecutar mi aplicación primero en un dispositivo de muy bajo nivel y luego trato de averiguar qué parte de la aplicación necesita un poco de mejora, ¿verdad? Entonces, y dependiendo de esa mejora, decido si esto debería ir a WebWorker o si esto debería ir a Worklet, por ejemplo, utilizando Worklet. Digamos, como ejemplo, di un ejemplo sobre Redux, ¿verdad? A veces sucede, sabes, tienes una operación síncrona en tu aplicación y ves que simplemente estás ejecutando algún código de JavaScript y es solo una ejecución. Y luego sientes, bueno, esto está bloqueando mi bucle de eventos por un tiempo. Entonces, y luego está bloqueando mi interfaz de usuario, ¿verdad? Entonces, probablemente este sea un buen candidato para moverlo allí. Pero luego vas a otra parte de tu aplicación y ves que, oh, esto es como un fondo que renderizo, ya sabes, y bueno, el renderizado causa un poco de tartamudeo cuando se ejecuta la animación, ¿verdad? Entonces pienso, oh, entonces tenemos otra API, worklet para renderizar este formato de bajo nivel de renderizado como gráficos y audios, ¿verdad? Entonces decido mover eso a worklet en lugar de hacerlo en WebWorker. O a veces sientes que, bueno, definitivamente puedes usar, de hecho tuve un ejemplo en la charla. Entonces definitivamente puedes usar algunas bibliotecas de JavaScript, por ejemplo, y decodificar o codificar o comprimir algunos datos o imágenes o videos y cosas así, ya sabes, en tu aplicación, seguro. Pero luego esa es probablemente la parte en la que piensas que, oh, esta parte, probablemente hay mejores bibliotecas en C o tal vez algunas bibliotecas se han escrito en ROS, y luego puedo compilarlo a WebAssembly. Así que esto es muy importante, de hecho. Cuando hablamos de estas API, es muy, muy importante hablar sobre qué parte de la aplicación tienes un problema. Entonces, y luego necesitas averiguar en función de eso, cuál está más cerca de la API que necesitas usar, ¿sabes? Pero generalmente lo hago de esta manera.
Sí, definitivamente tiene sentido, y es realmente interesante que tengamos todas estas opciones disponibles, ¿verdad?, y así podemos aprovecharlas. Y probablemente, sabes, cada aplicación sofisticada probablemente usará una combinación muy interesante, una combinación híbrida de todas esas cosas.
También hubo muchas preguntas en el chat. Una de ellas fue de Jay Holfeld, supongo. Y Jay quiere saber, ¿cuál es el compromiso al crear un Web Worker y hacer el trabajo? ¿Vale la pena usar Web Workers incluso para tareas mínimas? Sí, en primer lugar, hola, Jay. Muy buena pregunta. Si prestas atención a una de mis diapositivas, dije que hay un poco de sobrecarga cuando realmente estás creando un Web Worker. Técnicamente, estás agregando un poco de trabajo a tu aplicación o carga de trabajo, digamos. Así que hay un compromiso, seguro. Pero entonces, ¿tienes que usar Web Worker para todo? Bien, hoy aprendí que hay una biblioteca que simplemente puedo usar y luego está sincronizada. Como la forma en que escribo mi JavaScript.
Comments