Hacia una Biblioteca Estándar para Runtimes de JavaScript

Rate this content
Bookmark

Puedes revisar las diapositivas de la charla de James aquí.

FAQ

James Snell ha estado contribuyendo a Node durante casi siete años.

Recientemente se añadió soporte para streams web en Node.

James Snell propone la necesidad de una biblioteca estándar de API para los entornos de ejecución de JavaScript.

La principal preocupación es que tener muchas formas diferentes de hacer algo tan fundamental como la codificación base64 añade fricción y dificultad para los desarrolladores.

El modelo de 'núcleo pequeño' se critica por hacer la vida más difícil para los desarrolladores, ya que deben elegir entre múltiples implementaciones y mantenerse al día con las actualizaciones y la seguridad.

El módulo Base64.js tiene más de 30 millones de descargas por semana desde NPM.

Los entornos de ejecución de JavaScript enfrentan el problema de la incompatibilidad y la falta de estandarización de las API entre diferentes plataformas.

La API Buffer es específica de Node y se utiliza para trabajar con datos binarios. Es una API significativa que James Snell sugiere debería ser estandarizada.

La cooperación es importante para desarrollar APIs comunes y consistentes que funcionen en múltiples plataformas, simplificando el desarrollo y mantenimiento de aplicaciones.

James Snell
James Snell
34 min
17 Feb, 2022

Comments

Sign in or register to post your comment.

Video Summary and Transcription

Existe la necesidad de una biblioteca estándar de APIs para los runtimes de JavaScript, ya que actualmente existen múltiples formas de realizar tareas fundamentales como la codificación base64. Históricamente, los runtimes de JavaScript han carecido de una biblioteca estándar, lo que ha causado fricción y dificultades para los desarrolladores. La idea de un núcleo pequeño tiene tanto beneficios como inconvenientes, con algunos runtimes abusando de él para limitar la innovación. Existe una desalineación entre Node y los navegadores web en términos de funcionalidad y estándares de API. La propuesta es involucrar a los desarrolladores de navegadores en conversaciones sobre la estandarización de API y crear una biblioteca estándar común para los runtimes de JavaScript.

1. Introducción a la Estandarización de la API de Node.js

Short description:

Hola, Congreso de Node. Soy James Snell, o JA Snell en GitHub o Twitter. He estado contribuyendo a Node durante casi siete años. Hemos tenido debates continuos sobre la estandarización de la API de Node y su alineación con los estándares de la plataforma web. Otros entornos de ejecución como Deno y los trabajadores de Cloudflare tienen sus propias API. Necesitamos una biblioteca estándar de API para los entornos de ejecución de JavaScript. Comencemos con una discusión sobre la codificación base64 en Node.

Hola, Congreso de Node. Soy James Snell, o JA Snell en GitHub o Twitter. Y estoy con CloudFlare. También estoy en el comité de dirección técnica de node. He estado contribuyendo a Node durante casi siete años. Comencé en 2015, justo cuando NodeJS y IOJS estaban teniendo sus problemas y los reuní. Así que han estado alrededor por un tiempo. Y en ese tiempo, ha habido algunos temas que se han desarrollado con el tiempo. Ya sabes, tenemos todos las API de node que existen. Ya sabes, hemos añadido un montón de nuevas características a node. Añadimos soporte para HTTP2 y nuevo análisis de URL. Recientemente, acabamos de añadir soporte para streams web, así que la API de stream legible y escribible. Creo que hace dos años, implementamos la API de Web Crypto. Así que, ya sabes, ha pasado mucho. Y durante ese tiempo, ya sabes, hemos tenido este tipo de debate y conversación continua sobre cuán estandarizadas deberían ser las API de Node o cuánto de las standards de la plataforma web Node debería estar prestando atención. Bueno, ya sabes, desde ese tiempo, ya sabes, hemos tenido otros entornos de ejecución que han surgido. Hemos tenido Deno, ya sabes, que es una plataforma fabulosa y fantástica. Pero tiene, ya sabes, su propio conjunto de API. Tenemos los trabajadores de Cloudflare, uno de los entornos de ejecución en los que estoy trabajando ahora. Ya sabes, y tiene su conjunto de API y cosas que hace. Y, ya sabes, hay otros entornos que puedes, ya sabes, mirar Fastly o mirar en, ya sabes, algunos de los dispositivos IoT, ya sabes, hay un montón de lugares donde JavaScript se está utilizando ahora. Así que, sí, tienes que parar y pensar, ya sabes, en algún momento, es bueno siempre dar un paso atrás y pensar, ¿qué tipo de API deberíamos estar implementando? Bueno, estoy aquí, ya sabes, después de, ya sabes, siete años de hacer esto, ya sabes, aquí con una propuesta un poco modesta. Necesitamos una biblioteca estándar de API para los entornos de ejecución de JavaScript. Voy a hablar un poco sobre, ya sabes, por qué estoy pensando eso y, ya sabes, qué tipo de cosas me gustaría ver. Así que, comencemos. Aquí hay un rompecabezas. Ya sabes, la codificación base64 es algo muy común en muchas aplicaciones. Lo vemos en todas partes. En Node, ya sabes, siempre hemos tenido esto, ya sabes, buffer desde hola a cadena base64. Podemos, ya sabes, tomar un

2. Codificación Base64 en JavaScript

Short description:

¿Cuál es la forma correcta de codificar en base64 los datos desde JavaScript? La respuesta es todas ellas. La API buffer de Node, la API de Deno, o algo de NPM. Sin embargo, tener tantas formas diferentes de hacer algo fundamental añade fricción y dificultad a los desarrolladores. El módulo Base64.js es ampliamente utilizado, a pesar de que Node tiene una opción incorporada. Ninguna de estas es la forma correcta porque siempre hay una forma diferente de hacerlo.

cadena codificada en base64 y obtener nuestro buffer de vuelta a partir de ella. Pero, ya sabes, ¿cuál es la forma correcta de codificar en base64 los data desde JavaScript, verdad? Hay esto, ya sabes, personas que han estado desarrollando el navegador durante mucho tiempo, ya sabes, probablemente están familiarizados con esta función B2A. ¿Es la forma correcta? Quiero decir, es el único estándar que tenemos para la codificación base64, pero honestamente, es bastante malo. No maneja todo lo que necesitas y simplemente funciona más o menos bien. Pero realmente no podemos cambiarlo debido a la compatibilidad hacia atrás y todas esas cosas. Entonces, ¿cuál es la forma correcta de hacer la codificación base64 en JavaScript? ¿Es la API buffer de Node? ¿Es la API de Deno, ya sabes, donde importas esta función de codificación de su biblioteca estándar? O es, ya sabes, ¿la respuesta es algo que está en NPM, verdad? Donde, ya sabes, tienes que salir y, ya sabes, instalar algún módulo de NPM una vez que lo encuentres, una vez que encuentres el correcto. Y con suerte, encuentras uno que esté, ya sabes, bien mantenido, que tenga un contribuyente activo, al menos, ya sabes, un contribuyente activo que lo mantenga actualizado y en movimiento y asegure que sigue funcionando con Node y diferentes versiones de Node o diferentes versiones de Deno o, ya sabes, otros entornos de ejecución. Ya sabes, y cuál es, ya sabes, una vez que tienes el mecanismo básico, ya sabes, ¿cuál API aquí es la correcta? Desafortunadamente, la respuesta es todas ellas. Todas ellas son la forma correcta, ya sabes, pero tener tantas formas diferentes de hacer algo que es tan fundamental simplemente añade fricción, añade dificultad a los desarrolladores que están escribiendo code que se ejecuta en la web. Sorprendentemente, esta cuarta opción, este módulo Base64.js, ya sabes, tiene más de 30 millones de descargas por semana desde NPM y tiene más de 1,300 dependientes. Y muchos de esos son aplicaciones de Node, a pesar del hecho de que Node tiene esto incorporado, ¿verdad? Pero también un gran número de esas dependencias son, ya sabes, aplicaciones de navegador, que, ya sabes, todo lo que tienen que confiar incorporado es B2A. Y, ya sabes, B2A en sí mismo carece de bastante funcionalidad. Entonces, ya sabes, la respuesta es, ya sabes, todas estas son la forma correcta, pero ninguna de ellas es la forma correcta porque siempre hay una forma diferente de hacerlo

QnA

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

Escalando con Remix y Micro Frontends
Remix Conf Europe 2022Remix Conf Europe 2022
23 min
Escalando con Remix y Micro Frontends
Top Content
¿Tienes un producto grande construido por muchos equipos? ¿Estás luchando para lanzar a menudo? ¿Se convirtió tu frontend en un monolito inmantenible masivo? Si, como yo, has respondido sí a cualquiera de esas preguntas, ¡esta charla es para ti! Te mostraré exactamente cómo puedes construir una arquitectura de micro frontend con Remix para resolver esos desafíos.
Sistemas de Diseño: Caminando la Línea Entre Flexibilidad y Consistencia
React Advanced Conference 2021React Advanced Conference 2021
47 min
Sistemas de Diseño: Caminando la Línea Entre Flexibilidad y Consistencia
Top Content
Los sistemas de diseño buscan aportar consistencia al diseño de una marca y hacer que el desarrollo de la interfaz de usuario sea productivo. Las bibliotecas de componentes con una API bien pensada pueden facilitar esto. Pero, ¡a veces una elección de API puede accidentalmente sobrepasar y ralentizar al equipo! Hay un equilibrio allí... en algún lugar. Exploremos algunos de los problemas y posibles soluciones creativas.
Componentes de Full Stack
Remix Conf Europe 2022Remix Conf Europe 2022
37 min
Componentes de Full Stack
Top Content
Remix es un marco de trabajo web que te ofrece el modelo mental simple de una aplicación de múltiples páginas (MPA) pero el poder y las capacidades de una aplicación de una sola página (SPA). Uno de los grandes desafíos de las SPA es la gestión de la red que resulta en una gran cantidad de indirecciones y código defectuoso. Esto es especialmente notable en el estado de la aplicación que Remix elimina por completo, pero también es un problema en los componentes individuales que se comunican con un punto final de backend de un solo propósito (como una búsqueda de combobox, por ejemplo).
En esta charla, Kent demostrará cómo Remix te permite construir componentes de interfaz de usuario complejos que están conectados a un backend de la manera más simple y poderosa que hayas visto. Dejándote tiempo para relajarte con tu familia o lo que sea que hagas para divertirte.
Haciendo JavaScript en WebAssembly Rápido
JSNation Live 2021JSNation Live 2021
29 min
Haciendo JavaScript en WebAssembly Rápido
Top Content
JavaScript en el navegador se ejecuta muchas veces más rápido de lo que lo hacía hace dos décadas. Y eso sucedió porque los proveedores de navegadores pasaron ese tiempo trabajando en intensivas optimizaciones de rendimiento en sus motores JavaScript.Debido a este trabajo de optimización, JavaScript ahora se está ejecutando en muchos lugares además del navegador. Pero todavía hay algunos entornos donde los motores JS no pueden aplicar esas optimizaciones de la manera correcta para hacer las cosas rápidas.Estamos trabajando para resolver esto, comenzando una nueva ola de trabajo de optimización de JavaScript. Estamos mejorando el rendimiento de JavaScript para entornos completamente diferentes, donde se aplican reglas diferentes. Y esto es posible gracias a WebAssembly. En esta charla, explicaré cómo funciona todo esto y qué vendrá a continuación.
Depuración de JS
React Summit 2023React Summit 2023
24 min
Depuración de JS
Top Content
Como desarrolladores, pasamos gran parte de nuestro tiempo depurando aplicaciones, a menudo código que ni siquiera escribimos. Lamentablemente, a pocos desarrolladores se les ha enseñado cómo abordar la depuración, es algo que la mayoría de nosotros aprendemos a través de la experiencia dolorosa. La buena noticia es que _puedes_ aprender a depurar de manera efectiva, y hay varias técnicas y herramientas clave que puedes usar para depurar aplicaciones de JS y React.
Es una jungla ahí fuera: ¿Qué está pasando realmente dentro de tu carpeta Node_Modules?
Node Congress 2022Node Congress 2022
26 min
Es una jungla ahí fuera: ¿Qué está pasando realmente dentro de tu carpeta Node_Modules?
Top Content
¿Sabes qué está pasando realmente en tu carpeta node_modules? Los ataques a la cadena de suministro de software han explotado en los últimos 12 meses y solo están acelerándose en 2022 y más allá. Profundizaremos en ejemplos de recientes ataques a la cadena de suministro y qué pasos concretos puedes tomar para proteger a tu equipo de esta amenaza emergente.
Puedes consultar las diapositivas de la charla de Feross aquí.

Workshops on related topic

Uso de CodeMirror para construir un editor de JavaScript con Linting y AutoCompletado
React Day Berlin 2022React Day Berlin 2022
86 min
Uso de CodeMirror para construir un editor de JavaScript con Linting y AutoCompletado
Top Content
WorkshopFree
Hussien Khayoon
Kahvi Patel
2 authors
Usar una biblioteca puede parecer fácil a primera vista, pero ¿cómo eliges la biblioteca correcta? ¿Cómo actualizas una existente? ¿Y cómo te abres camino a través de la documentación para encontrar lo que quieres?
En esta masterclass, discutiremos todos estos puntos finos mientras pasamos por un ejemplo general de construcción de un editor de código usando CodeMirror en React. Todo mientras compartimos algunas de las sutilezas que nuestro equipo aprendió sobre el uso de esta biblioteca y algunos problemas que encontramos.
Construye un Tablero Rico en Datos y Hermoso con la Rejilla de Datos de MUI X y Joy UI
React Summit 2023React Summit 2023
137 min
Construye un Tablero Rico en Datos y Hermoso con la Rejilla de Datos de MUI X y Joy UI
Top Content
WorkshopFree
Sam Sycamore
Siriwat (Jun) Kunaporn
2 authors
Aprende cómo utilizar el ecosistema completo de MUI para construir un tablero de gestión de proyectos hermoso y sofisticado en una fracción del tiempo que tomaría construirlo desde cero. En particular, veremos cómo integrar la Rejilla de Datos de MUI X con Joy UI, nuestra biblioteca de componentes más nueva y hermana del estándar de la industria Material UI.
Tabla de contenidos:- Presentando nuestro proyecto y herramientas- Configuración de la aplicación e instalación del paquete- Construcción del tablero- Prototipado, estilos y temas - Características de Joy UI- Filtrado, ordenación, edición - Características de la Rejilla de Datos- Conclusión, pensamientos finales, P&R
Masterclass de Node.js
Node Congress 2023Node Congress 2023
109 min
Masterclass de Node.js
Top Content
Workshop
Matteo Collina
Matteo Collina
¿Alguna vez has tenido dificultades para diseñar y estructurar tus aplicaciones Node.js? Construir aplicaciones que estén bien organizadas, sean probables y extensibles no siempre es fácil. A menudo puede resultar ser mucho más complicado de lo que esperas. En este evento en vivo, Matteo te mostrará cómo construye aplicaciones Node.js desde cero. Aprenderás cómo aborda el diseño de aplicaciones y las filosofías que aplica para crear aplicaciones modulares, mantenibles y efectivas.

Nivel: intermedio
Pruebas de Aplicaciones Web utilizando Cypress
TestJS Summit - January, 2021TestJS Summit - January, 2021
173 min
Pruebas de Aplicaciones Web utilizando Cypress
WorkshopFree
Gleb Bahmutov
Gleb Bahmutov
Este masterclass te enseñará los conceptos básicos de cómo escribir pruebas de extremo a extremo utilizando Cypress Test Runner.
Cubriremos la escritura de pruebas, abarcando todas las características de la aplicación, estructurando las pruebas, interceptando solicitudes de red y configurando los datos del backend.
Cualquier persona que conozca el lenguaje de programación JavaScript y tenga NPM instalado podrá seguir el masterclass.
Construye un potente DataGrid en pocas horas con Ag Grid
React Summit US 2023React Summit US 2023
96 min
Construye un potente DataGrid en pocas horas con Ag Grid
WorkshopFree
Mike Ryan
Mike Ryan
¿Tu aplicación React necesita mostrar eficientemente muchos (y muchos) datos en una cuadrícula? ¿Tus usuarios quieren poder buscar, ordenar, filtrar y editar datos? AG Grid es la mejor cuadrícula de JavaScript en el mundo y está llena de características, es altamente eficiente y extensible. En esta masterclass, aprenderás cómo empezar con AG Grid, cómo podemos habilitar la ordenación y el filtrado de datos en la cuadrícula, la representación de celdas y más. Saldrás de esta masterclass gratuita de 3 horas equipado con el conocimiento para implementar AG Grid en tu aplicación React.
Todos sabemos que crear nuestra propia solución de cuadrícula no es fácil, y seamos honestos, no es algo en lo que deberíamos estar trabajando. Estamos enfocados en construir un producto e impulsar la innovación. En esta masterclass, verás lo fácil que es empezar con AG Grid.
Prerrequisitos: React y JavaScript básicos
Nivel de la masterclass: Principiante
Construye y Despliega un Backend con Fastify y Platformatic
JSNation 2023JSNation 2023
104 min
Construye y Despliega un Backend con Fastify y Platformatic
WorkshopFree
Matteo Collina
Matteo Collina
Platformatic te permite desarrollar rápidamente APIs GraphQL y REST con un esfuerzo mínimo. La mejor parte es que también te permite aprovechar todo el potencial de Node.js y Fastify cuando lo necesites. Puedes personalizar completamente una aplicación de Platformatic escribiendo tus propias características y complementos adicionales. En el masterclass, cubriremos tanto nuestros módulos de código abierto como nuestra oferta en la nube:- Platformatic OSS (open-source software) — Herramientas y bibliotecas para construir rápidamente aplicaciones robustas con Node.js (https://oss.platformatic.dev/).- Platformatic Cloud (actualmente en beta) — Nuestra plataforma de alojamiento que incluye características como aplicaciones de vista previa, métricas integradas e integración con tu flujo de Git (https://platformatic.dev/).
En este masterclass aprenderás cómo desarrollar APIs con Fastify y desplegarlas en la nube de Platformatic.