Hacia una Biblioteca Estándar para Runtimes de JavaScript

Rate this content
Bookmark

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

This talk has been presented at Node Congress 2022, check out the latest edition of this JavaScript Conference.

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
This talk discusses the usage of Microfrontends in Remix and introduces the Tiny Frontend library. Kazoo, a used car buying platform, follows a domain-driven design approach and encountered issues with granular slicing. Tiny Frontend aims to solve the slicing problem and promotes type safety and compatibility of shared dependencies. The speaker demonstrates how Tiny Frontend works with server-side rendering and how Remix can consume and update components without redeploying the app. The talk also explores the usage of micro frontends and the future support for Webpack Module Federation in Remix.
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
The Talk discusses the balance between flexibility and consistency in design systems. It explores the API design of the ActionList component and the customization options it offers. The use of component-based APIs and composability is emphasized for flexibility and customization. The Talk also touches on the ActionMenu component and the concept of building for people. The Q&A session covers topics such as component inclusion in design systems, API complexity, and the decision between creating a custom design system or using a component library.
Componentes de Full Stack
Remix Conf Europe 2022Remix Conf Europe 2022
37 min
Componentes de Full Stack
Top Content
RemixConf EU discussed full stack components and their benefits, such as marrying the backend and UI in the same file. The talk demonstrated the implementation of a combo box with search functionality using Remix and the Downshift library. It also highlighted the ease of creating resource routes in Remix and the importance of code organization and maintainability in full stack components. The speaker expressed gratitude towards the audience and discussed the future of Remix, including its acquisition by Shopify and the potential for collaboration with Hydrogen.
Depuración de JS
React Summit 2023React Summit 2023
24 min
Depuración de JS
Top Content
Debugging JavaScript is a crucial skill that is often overlooked in the industry. It is important to understand the problem, reproduce the issue, and identify the root cause. Having a variety of debugging tools and techniques, such as console methods and graphical debuggers, is beneficial. Replay is a time-traveling debugger for JavaScript that allows users to record and inspect bugs. It works with Redux, plain React, and even minified code with the help of source maps.
Haciendo JavaScript en WebAssembly Rápido
JSNation Live 2021JSNation Live 2021
29 min
Haciendo JavaScript en WebAssembly Rápido
Top Content
WebAssembly enables optimizing JavaScript performance for different environments by deploying the JavaScript engine as a portable WebAssembly module. By making JavaScript on WebAssembly fast, instances can be created for each request, reducing latency and security risks. Initialization and runtime phases can be improved with tools like Wiser and snapshotting, resulting in faster startup times. Optimizing JavaScript performance in WebAssembly can be achieved through techniques like ahead-of-time compilation and inline caching. WebAssembly usage is growing outside the web, offering benefits like isolation and portability. Build sizes and snapshotting in WebAssembly depend on the application, and more information can be found on the Mozilla Hacks website and Bike Reliance site.
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
The talk discusses the importance of supply chain security in the open source ecosystem, highlighting the risks of relying on open source code without proper code review. It explores the trend of supply chain attacks and the need for a new approach to detect and block malicious dependencies. The talk also introduces Socket, a tool that assesses the security of packages and provides automation and analysis to protect against malware and supply chain attacks. It emphasizes the need to prioritize security in software development and offers insights into potential solutions such as realms and Deno's command line flags.

Workshops on related topic

Master Patrones de JavaScript
JSNation 2024JSNation 2024
145 min
Master Patrones de JavaScript
Featured Workshop
Adrian Hajdin
Adrian Hajdin
Durante este masterclass, los participantes revisarán los patrones esenciales de JavaScript que todo desarrollador debe conocer. A través de ejercicios prácticos, ejemplos del mundo real y discusiones interactivas, los asistentes profundizarán su comprensión de las mejores prácticas para organizar el código, resolver desafíos comunes y diseñar arquitecturas escalables. Al final del masterclass, los participantes ganarán confianza en su capacidad para escribir código JavaScript de alta calidad que perdure en el tiempo.
Puntos Cubiertos:
1. Introducción a los Patrones de JavaScript2. Patrones Fundamentales3. Patrones de Creación de Objetos4. Patrones de Comportamiento5. Patrones Arquitectónicos6. Ejercicios Prácticos y Estudios de Caso
Cómo Ayudará a los Desarrolladores:
- Obtener una comprensión profunda de los patrones de JavaScript y sus aplicaciones en escenarios del mundo real- Aprender las mejores prácticas para organizar el código, resolver desafíos comunes y diseñar arquitecturas escalables- Mejorar las habilidades de resolución de problemas y la legibilidad del código- Mejorar la colaboración y comunicación dentro de los equipos de desarrollo- Acelerar el crecimiento profesional y las oportunidades de avance en la industria del software
Masterclass: Integrando LangChain con JavaScript para Desarrolladores Web
React Summit 2024React Summit 2024
92 min
Masterclass: Integrando LangChain con JavaScript para Desarrolladores Web
Featured Workshop
Vivek Nayyar
Vivek Nayyar
Sumérgete en el mundo de la IA con nuestro masterclass interactivo diseñado específicamente para desarrolladores web. "Masterclass: Integrando LangChain con JavaScript para Desarrolladores Web" ofrece una oportunidad única para cerrar la brecha entre la IA y el desarrollo web. A pesar de la prominencia de Python en el desarrollo de IA, el vasto potencial de JavaScript sigue siendo en gran medida inexplorado. Este masterclass tiene como objetivo cambiar eso.A lo largo de esta sesión práctica, los participantes aprenderán cómo aprovechar LangChain, una herramienta diseñada para hacer que los modelos de lenguaje grandes sean más accesibles y útiles, para construir agentes de IA dinámicos directamente dentro de entornos JavaScript. Este enfoque abre nuevas posibilidades para mejorar las aplicaciones web con funciones inteligentes, desde el soporte al cliente automatizado hasta la generación de contenido y más.Comenzaremos con los conceptos básicos de LangChain y los modelos de IA, asegurando una base sólida incluso para aquellos nuevos en IA. A partir de ahí, nos sumergiremos en ejercicios prácticos que demuestran cómo integrar estas tecnologías en proyectos reales de JavaScript. Los participantes trabajarán en ejemplos, enfrentando y superando los desafíos de hacer que la IA funcione sin problemas en la web.Este masterclass es más que una experiencia de aprendizaje; es una oportunidad de estar a la vanguardia de un campo emergente. Al final, los asistentes no solo habrán adquirido habilidades valiosas, sino que también habrán creado funciones mejoradas con IA que podrán llevar a sus proyectos o lugares de trabajo.Ya seas un desarrollador web experimentado curioso acerca de la IA o estés buscando expandir tus habilidades en áreas nuevas y emocionantes, "Masterclass: Integrando LangChain con JavaScript para Desarrolladores Web" es tu puerta de entrada al futuro del desarrollo web. Únete a nosotros para desbloquear el potencial de la IA en tus proyectos web, haciéndolos más inteligentes, interactivos y atractivos para los usuarios.
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.