Javascript Debería Venir Con Baterías

Rate this content
Bookmark

Configurar proyectos de JavaScript no es divertido. Empezar implica instalar y configurar node, tsc, prettier, eslint, un marco de pruebas, un controlador de base de datos, y más. ¿Por qué JavaScript no incluye baterías? En esta charla hablaremos de cómo Deno soluciona esto, permitiéndote concentrarte en construir cosas. Exploramos qué beneficios desbloquea la integración completa de herramientas, y recordamos lo divertido que es programar si tus herramientas te ayudan, en lugar de requerir tu cuidado constante.

Luca Casonato
Luca Casonato
30 min
08 Dec, 2023

Comments

Sign in or register to post your comment.

Video Summary and Transcription

Javascript Debería Venir Con Baterías: Deno es un entorno de ejecución de JavaScript de próxima generación que aborda la falta de herramientas integradas en JavaScript. Proporciona una forma segura y sencilla de desarrollar aplicaciones con pruebas integradas, linting, formateo, y un servidor de lenguaje para VS Code. Deno es compatible con Node.js y NPM, soporta APIs estándar de la web, y permite la portabilidad de código entre el frontend y el servidor. También ofrece características como una base de datos integrada, un almacén de clave-valor, y monetización transparente con Deno Deploy.

Available in English

1. Introducción a JavaScript y Premisa de la Charla

Short description:

Hola a todos. Gracias por estar aquí. Soy Luca, ingeniero de software en la empresa Deno. Mi charla es JavaScript Debería Venir Con Baterías. JavaScript carece de una biblioteca estándar extensa y herramientas predeterminadas, lo que requiere que los desarrolladores configuren todo ellos mismos. Esto incluye formateadores, linters, marcos de prueba y paquetes adicionales para diversas tareas.

Hola a todos. Gracias por estar aquí. Sé que es muy tarde. Probablemente todos estén muy cansados y quieran irse a casa. Así que les contaré algo que no sea React, por una vez. Probablemente han tenido muchas charlas de React hoy porque estamos en una conferencia de React. Pero no lo sé. Voy a hablar más sobre JavaScript porque, hey, React es realmente solo JavaScript, ¿verdad? ¿Y por qué no hablamos un poco sobre JavaScript?

Así que mi charla es JavaScript Debería Venir Con Baterías. Y déjenme explicar... En realidad, permítanme primero presentarme. Eso probablemente sea útil. Soy Luca. Soy ingeniero de software en la empresa Deno. Algunos de ustedes pueden haber oído hablar de Deno. Si no, llegaré a eso en un segundo. Trabajo en varias cosas relacionadas con Deno. Construí un marco de frontend para Deno llamado Fresh, que algunos de ustedes pueden haber visto. Y hago un montón de trabajo con standards en T-SYS39, estandarizando el lenguaje JavaScript. Y en WhatWig y W3C, estandarizando cosas como Fetch, HTML. Y soy co-presidente en Widger CG, que es un grupo de community en el W3C donde intentamos hacer que los entornos de ejecución de JavaScript del lado del servidor sean más interoperables. Así que hacer que node.js funcione mejor con Deno, y Deno mejor con CloudFlow Workers, con RUN, con lo que sea, ¿verdad?

Así que sobre mi charla de hoy. Tengo esta premisa que voy a intentar argumentar, que es que JavaScript es demasiado básico y esto es malo. Y lo que quiero decir con esto es que JavaScript realmente no tiene una biblioteca estándar extensa o herramientas predeterminadas. Sino que, más bien, todos tienen que empaquetar todo lo que quieren en su proyecto juntos por sí mismos. Y esto significa que si estás configurando un nuevo proyecto, tienes que mirar fijamente una tabla como esta y llenar el lado derecho. Necesito un formateador, así que déjame elegir un formateador. ¿Uso Dprint, uso Prettier, simplemente uso el autoformateo en VS Code, o no uso ninguno? Linting, testing, ¿quiero usar TypeScript o no? Si es así, ahora necesito que todas mis herramientas soporten TypeScript. Tal vez quiero configurar benchmarking, generación de documentation, si tengo una biblioteca. Y luego necesitas incorporar un montón de paquetes para cosas que vas a necesitar hacer. Necesitas incorporar un paquete para hacer análisis de YAML porque tienes un archivo de configuración que está escrito en YAML que otro equipo te dio.

2. Desafíos con Herramientas y Dependencias

Short description:

O tienes algún servicio que estás llamando y falla con mucha frecuencia, por lo que quieres hacer eso con reintentos, necesitas incorporar alguna biblioteca para eso. Y esto termina con cada herramienta y API que necesitas, necesitas tener un paquete más que instalar. Así que tienes esta carpeta package.json muy grande. Y esto se vuelve aún más complicado porque hay tantas herramientas diferentes por ahí. Cuando quieres usarlas juntas, las cosas se vuelven aún más complicadas.

O tienes algún servicio que estás llamando y falla con mucha frecuencia, por lo que quieres hacer eso con reintentos, necesitas incorporar alguna biblioteca para eso. Y esto termina con cada herramienta y API que necesitas, necesitas tener un paquete más que instalar.

Así que tienes esta carpeta package.json muy grande. Y esto se vuelve aún más complicado porque hay tantas herramientas diferentes por ahí. Cuando quieres usarlas juntas, las cosas se vuelven aún más complicadas. Puedes instalar ESLint. Espero que tu cerveza esté bien. Entonces, cuando instalas ESLint y quieres usarlo con TypeScript, eso no funciona de inmediato. Necesitas instalar otra herramienta llamada TypeScript ESLint. No solo instalas uno, instalas dos paquetes, agregas un montón de cosas a tu archivo de configuración de ESLint, también necesitas tener un archivo de configuración para ESLint. Lo mismo ocurre con JSX, necesitas agregar plugins para eso. ESLint es bastante bueno con ESM.

Una de las herramientas destacadas aquí con respecto al soporte de ESM todavía no podía usar archivos de configuración hasta hace un par de semanas, meses, no lo sé. Pero hay algunas realmente malas, y no quiero odiar a la gente que construye Jest. Gran parte de esto se reduce a que otros proyectos que utilizan no soportan bien las herramientas, pero Jest y TypeScript, configurar eso, no es divertido. Quieres agregar JSX a la mezcla, necesitas configurar más. Aquí, ni siquiera estás configurando para Jest, ¿estás configurando para Babel? Es como, está bien, supongo que ahora estoy usando Babel. Y ESM, simplemente no uses ESM si usas Jest. Si quieres probar en ESM, simplemente no uses Jest. Y luego tu carpeta de módulos de nodo se ve así. Tienes 100 dependencias en tu package.json, y una carpeta de módulos de nodo de 300 megabytes. Y solo tienes un archivo de configuración, y luego tienes un proyecto como este, ¿verdad? E imagina llegar a una empresa y descargas el repositorio, y quieres empezar a trabajar, y te encuentras con esto. Esto no es divertido. Esto no es algo que quieras. Solo quieres configurarlo y que todo funcione. Y quieres empezar un nuevo proyecto, no quieres tener que configurar esto. Solo quieres que funcione de inmediato. Entonces, ¿cómo resolvemos esto? Y como desarrollador de JavaScript, puedes estar preguntándote, sí, ¿cómo resolvemos esto? Pero si a veces te mueves por otros ecosistemas de lenguajes, puedes ver que algunos ecosistemas resuelven esto muy bien. Algunos lo hacen muy mal, pero algunos lo hacen realmente bien. Por ejemplo, Rust y Go.

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

Node.js Compatibility in Deno
Node Congress 2022Node Congress 2022
34 min
Node.js Compatibility in Deno
Can Deno run apps and libraries authored for Node.js? What are the tradeoffs? How does it work? What’s next?
Deno 2.0
Node Congress 2023Node Congress 2023
36 min
Deno 2.0
Top Content
Deno 2.0 is imminent and it's bringing some big changes to the JavaScript runtime. In this talk, we'll introduce the new features including import maps, package.json auto-discovery, and bare specifiers. We'll discuss how these improvements will help address issues like duplicate dependencies and disappearing dependencies. Additionally, we'll delve into the built-in support for deno: specifiers on the deno.land/x registry and its role in providing a recommended path for publishing. Come learn about how these updates will shape the future of the JavaScript ecosystem and improve backwards compatibility with Node applications.
Bun, Deno, Node.js? Recreating a JavaScript runtime from Scratch - Understand magic behind Node.js
Node Congress 2023Node Congress 2023
29 min
Bun, Deno, Node.js? Recreating a JavaScript runtime from Scratch - Understand magic behind Node.js
Bun, Deno, and many other JavaScript runtimes have been hyped, but do you know why? Is it that easy to make a runtime from scratch?

I've been researching the secret behind Node.js' power and why there are so many new JavaScript runtimes coming up. Breaking down each key component used on Node.js I've come to interesting conclusions that many people used to say whereas in practice it works a bit differently.

In this talk, attendees will learn the concepts used to create a new JavaScript runtime. They're going to go through an example of how to make a JavaScript runtime by following what's behind the scenes on the Node.js project using C++. They'll learn the relationship between Chrome's V8 and Libuv and what makes one JavaScript runtime better than others.

This talk will cover the following topics:
- What's a JavaScript Engine - V8
- Why Node.js uses Libuv
- How to create a JS Runtime from scratch
Writing universal modules for Deno, Node, and the browser
TypeScript Congress 2022TypeScript Congress 2022
25 min
Writing universal modules for Deno, Node, and the browser
This talk will walk you through writing a module in TypeScript that can be consumed by users of Deno, Node, and browsers. I will walk through how to set up formatting, linting, and testing in Deno, and then how to publish your module to deno.land/x and npm. I will also start out with a quick introduction on what Deno is.
Fresh: a new full stack web framework for Deno
Node Congress 2023Node Congress 2023
24 min
Fresh: a new full stack web framework for Deno
Fresh is a web framework based on Deno and Web standards built to run on the edge
Experimenting with Deno for Easier Kubernetes Deployments
DevOps.js Conf 2022DevOps.js Conf 2022
31 min
Experimenting with Deno for Easier Kubernetes Deployments
As we all know, dealing with Kubernetes YAML is not very intuitive (especially for those just getting starting) and the more resources and dependencies are added the messier and more complex the process becomes. In this talk, we'll explore how we can use Typescript and Deno to bring typing, composition, code-reuse, and testing as an alternative to YAML - that doesn't include these capabilities, all while still remaining declarative and easy to use.

Workshops on related topic

Building a Hyper Fast Web Server with Deno
JSNation Live 2021JSNation Live 2021
156 min
Building a Hyper Fast Web Server with Deno
WorkshopFree
Matt Landers
Will Johnston
2 authors
Deno 1.9 introduced a new web server API that takes advantage of Hyper, a fast and correct HTTP implementation for Rust. Using this API instead of the std/http implementation increases performance and provides support for HTTP2. In this workshop, learn how to create a web server utilizing Hyper under the hood and boost the performance for your web apps.
Writing Universal Modules for Deno, Node and the Browser
Node Congress 2022Node Congress 2022
57 min
Writing Universal Modules for Deno, Node and the Browser
Workshop
Luca Casonato
Luca Casonato
This workshop will walk you through writing a module in TypeScript that can be consumed users of Deno, Node and the browsers. I will explain how to set up formatting, linting and testing in Deno, and then how to publish your module to deno.land/x and npm. We’ll start out with a quick introduction to what Deno is.