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.

This talk has been presented at React Day Berlin 2023, check out the latest edition of this React Conference.

FAQ

Deno es un entorno de ejecución de JavaScript de próxima generación que ofrece seguridad por defecto, soporte nativo para TypeScript y JSX, herramientas integradas como testing, linting y formateo, y ejecutables de un solo archivo. Además, incluye APIs estándar de la web integradas y es compatible con Node.js y NPM.

Deno integra herramientas de desarrollo de serie, como un linter y un formateador, que no requieren configuración adicional. Estas herramientas están diseñadas para trabajar con estándares que son comúnmente aceptados, minimizando la necesidad de personalización.

Fresh es un marco de trabajo de frontend construido para Deno que utiliza Preact en lugar de React. Está diseñado para ofrecer cero sobrecarga en tiempo de ejecución y soporta renderizado del lado del servidor en el borde.

Deno simplifica la configuración de proyectos al eliminar la necesidad de archivos de configuración y proporcionar herramientas y dependencias integradas. Esto permite a los desarrolladores iniciar proyectos rápidamente sin tener que configurar manualmente cada herramienta o dependencia.

Deno promueve un enfoque 'baterías incluidas', donde muchas herramientas y configuraciones necesarias para el desarrollo moderno están integradas de serie. Esto reduce la complejidad y mejora la coherencia entre proyectos, facilitando la portabilidad y la colaboración.

Deno se lanzó como una alternativa a Node.js, con mejoras en seguridad, herramientas integradas y soporte nativo para TypeScript. Aunque comparte algunas compatibilidades con Node.js, Deno introduce un modelo de permisos más seguro y una experiencia de desarrollo más simplificada.

Deno es compatible con Astro a través de un adaptador específico y está trabajando para mejorar la compatibilidad con Next.js, especialmente en el modo de desarrollo. Los esfuerzos están en curso para asegurar la compatibilidad completa con estos y otros frameworks populares.

Deno proporciona Deno Deploy, una plataforma de alojamiento optimizada para aplicaciones JavaScript serverless que se ejecuta en el borde. Esta solución está diseñada para aplicaciones a gran escala y ofrece características como una base de datos global y soporte para módulos Node.

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.

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

Compatibilidad con Node.js en Deno
Node Congress 2022Node Congress 2022
34 min
Compatibilidad con Node.js en Deno
Deno aims to provide Node.js compatibility to make migration smoother and easier. While Deno can run apps and libraries offered for Node.js, not all are supported yet. There are trade-offs to consider, such as incompatible APIs and a less ideal developer experience. Deno is working on improving compatibility and the transition process. Efforts include porting Node.js modules, exploring a superset approach, and transparent package installation from npm.
Deno 2.0
Node Congress 2023Node Congress 2023
36 min
Deno 2.0
Top Content
The Talk discusses forced optimization with Node and Deno, with Deno aiming to pursue the same goals in a more expansive and modern way. Deno has built-in support for NPM and enforces security constraints. It also has a key-value database called Deno KV, which will be a core part of the Deno 2 API. Deno Deploy is a serverless Edge Functions platform powered by FoundationDB, optimized for fast reading and ideal for building eCommerce sites or application servers at the edge. Deno 2.0 is coming soon with more features under development.
Bun, Deno, Node.js? Recreando un tiempo de ejecución de JavaScript desde cero - Comprende la magia detrás de Node.js
Node Congress 2023Node Congress 2023
29 min
Bun, Deno, Node.js? Recreando un tiempo de ejecución de JavaScript desde cero - Comprende la magia detrás de Node.js
The Talk explores the magic behind Node.js and delves into its components, including V8, libuv, and the C++ bridge. It discusses the workflow and execution process, the use of NodeMod, and the understanding of console functions. The Talk also covers Node.js functions and scheduling, the introduction of runtimes, and the collaboration between JavaScript runtimes. It concludes with insights on content production, the choice of Node.js, and the inspiration behind it.
Escribiendo módulos universales para Deno, Node y el navegador
TypeScript Congress 2022TypeScript Congress 2022
25 min
Escribiendo módulos universales para Deno, Node y el navegador
Deno is a modern runtime for TypeScript and JavaScript that runs out of the box and is secure by default. The Talk covers building a greeting message library with Deno, compiling Deno libraries for Node consumers, setting up the editor and writing code, writing tests and running them with dnotest, code formatting, linting, and publishing, publishing to NPM and running tests, and building and publishing the NPM package. The speaker emphasizes the ease of use and integration of Deno's tooling system.
Fresh: un nuevo marco de trabajo web de pila completa para Deno
Node Congress 2023Node Congress 2023
24 min
Fresh: un nuevo marco de trabajo web de pila completa para Deno
Today's Talk introduces Fresh, a full-stack web framework for Deno, and covers its features, such as static files, routes, and data-fetching. It also discusses middleware, error pages, and styling options. The Talk explains the Islands architecture used by Fresh to enable client interactivity. The demo showcases the use of hybrid routes and islands components, and resources for Fresh, Deno, Preact, TypeScript, and web standards are provided.
Experimentando con Deno para facilitar las implementaciones de Kubernetes
DevOps.js Conf 2022DevOps.js Conf 2022
31 min
Experimentando con Deno para facilitar las implementaciones de Kubernetes
The Talk discusses using Dino and TypeScript to simplify writing and managing Kubernetes YAML configurations. It explores the challenges of working with large YAML files and introduces a unique solution. The Talk also highlights the features and benefits of Deno, such as its secure runtime and powerful typing capabilities. It demonstrates how Deno can be used to create and modify Kubernetes objects, and emphasizes the advantages of using a general-purpose language for configuration. The Talk concludes by discussing the potential applications of this approach beyond Kubernetes deployments.

Workshops on related topic

Construyendo un Servidor Web Hiper Rápido con Deno
JSNation Live 2021JSNation Live 2021
156 min
Construyendo un Servidor Web Hiper Rápido con Deno
WorkshopFree
Matt Landers
Will Johnston
2 authors
Deno 1.9 introdujo una nueva API de servidor web que aprovecha Hyper, una implementación rápida y correcta de HTTP para Rust. El uso de esta API en lugar de la implementación std/http aumenta el rendimiento y proporciona soporte para HTTP2. En este masterclass, aprende cómo crear un servidor web utilizando Hyper en el fondo y mejorar el rendimiento de tus aplicaciones web.
Escribiendo Módulos Universales para Deno, Node y el Navegador
Node Congress 2022Node Congress 2022
57 min
Escribiendo Módulos Universales para Deno, Node y el Navegador
Workshop
Luca Casonato
Luca Casonato
En este masterclass te guiaré en la escritura de un módulo en TypeScript que pueda ser utilizado por usuarios de Deno, Node y los navegadores. Explicaré cómo configurar el formato, linting y pruebas en Deno, y luego cómo publicar tu módulo en deno.land/x y npm. Comenzaremos con una breve introducción sobre qué es Deno.