Esta charla te guiará a través de algunas de las características geniales en Node que podrías haber pasado por alto.
This talk has been presented at JSNation 2023, check out the latest edition of this JavaScript Conference.
Esta charla te guiará a través de algunas de las características geniales en Node que podrías haber pasado por alto.
This talk has been presented at JSNation 2023, check out the latest edition of this JavaScript Conference.
La versión actual de Node es la versión 19.
Node versión 20 incluye características como permisos experimentales que controlan el acceso del proceso, ejecutables únicos para aplicaciones independientes y mejoras en el manejo de módulos con la bandera de carga experimental.
Los permisos experimentales en Node versión 20 permiten controlar lo que puede hacer el proceso, como permitir la lectura o escritura en sistemas de archivos específicos o ejecutar procesos secundarios.
Un ejecutable único en Node es un archivo binario que contiene toda la aplicación y sus dependencias, permitiendo que se ejecute en cualquier sistema operativo sin necesidad de Node. Se crea usando comandos específicos que empaquetan la aplicación.
import.meta.resolve es una función que resuelve rutas de módulos en todos los entornos, ya sea en un navegador o en Node. Devuelve la ruta o URL resuelta según el entorno en el que se ejecuta.
La versión 20 estabiliza y mejora funcionalidades para pruebas, como la integración de 'describe' e 'it' para definir y ejecutar pruebas, y la capacidad de simular métodos durante las pruebas.
En Node versión 20, los búferes de matriz redimensionables permiten ajustar el tamaño de los búferes, mientras que los búferes de matriz compartidos facilitan el uso compartido de datos entre múltiples procesos o hilos.
Hola, JS Nation. ¿Qué hay de nuevo en Node? En esta charla, te mostraré algunas características de la versión 19 y algunas de la versión 18 y definitivamente muchas de la versión 20. La versión 20 de Node introduce características de permisos experimentales que te brindan control sobre el proceso. Puedes permitir o denegar permisos para el sistema de archivos, procesos secundarios o hilos de trabajo. Otra característica son los ejecutables únicos, que te permiten empaquetar una aplicación independiente en un solo archivo binario que puede ejecutarse en cualquier sistema operativo sin necesidad de Node.
Hola, JS Nation. ¿Qué hay de nuevo en Node? Soy Hemant. Soy un gerente de ingeniería senior en PayPal. Soy delegado de TC 39 y experto en desarrollo web y pagos de Google. Puedes encontrarme en htman.com o enviarme un tweet a GNU month.
Si observas la línea de tiempo de hoy para las diferentes versiones de Node y su estado, la versión actual es la versión 19 y tenemos la versión 20, 20.0.1 para ser precisos, que se lanzó recientemente. En esta charla, te mostraré algunas características que quizás conozcas o que te hayas perdido de la versión 19 y algunas de la versión 18 y definitivamente muchas de la versión 20, y algunas de ellas probablemente aún estén en la rama principal y puedan ser inestables. Así que echemos un vistazo.
Node versión 20. Primero, hablaré sobre las características de permisos experimentales que te dan control sobre lo que puede hacer el proceso. Puedes permitir que lea un sistema de archivos en particular o un proceso secundario. En este ejemplo, vemos que decimos node seguido de la bandera de permisos experimentales y decimos permitir escritura de FS en /temp. Y decimos permitir lectura de FS en /home/index.js y ese index.js solo podrá escribir en /temp y leer desde /home/index.js. Sí. También podemos decir permitir procesos secundarios en index.js y el permiso de proceso que tiene FS.write sería verdadero porque está permitido y process.permissions. Entonces, toma un segundo parámetro donde puedes pasar la ruta y ver si el proceso actual tiene permiso para escribir en esa ruta o no. Y eso devuelve verdadero. Si ejecutas este index.js con permisos experimentales en este ejemplo en particular, arroja un error que dice que el acceso a la API ha sido restringido. Así que puede ser sistema de archivos, puede ser proceso secundario o hilos de trabajo que se pueden controlar. También puedes denegar los permisos o verificar si están presentes o no. Así que tienes control total sobre a qué tiene acceso el proceso. Puede ser similar a algunos otros motores de tiempo de ejecución como Dino, pero esto es muy genial de ver en Node.
A continuación, tenemos ejecutables únicos. Tomemos este ejemplo donde digo echo console.log, hello process.org BF2 y lo envío a hello.js y luego copio o comando node hello desde la ruta de Node. Utilizo post-jet en npmx según el sistema operativo en el que te encuentres o en OS X u otros sistemas. Simplemente usamos este comando y tenemos que usar ese binario en particular y luego tendríamos un archivo ejecutable único. Si miramos .hello y paso la palabra, obtenemos hello word. Por lo tanto, esto resulta muy interesante para las personas que escriben aplicaciones independientes utilizando Node. Pueden empaquetarlo en un solo archivo binario y enviarlo a cualquier sistema operativo y el requisito es que el sistema operativo no necesite tener Node. Todo esto está empaquetado con Node y puede ejecutarse.
Esta parte presenta la bandera de carga experimental, que brinda a los desarrolladores control sobre el proceso de carga de módulos. Al engancharse en diferentes fases del proceso de carga, como la resolución, obtención de la fuente, obtención del formato y transformación de la fuente, los desarrolladores pueden personalizar cómo se cargan los módulos. Además, la función import.meta.resolve permite resolver rutas de archivos o URL basándose en el entorno actual, lo que proporciona flexibilidad en la resolución de módulos.
Esto lo hace muy interesante para las personas que escriben aplicaciones independientes. Podemos simplemente empaquetarlo, agruparlo y enviarlo, y el usuario solo tiene que hacer clic y funciona correctamente. También tenemos la bandera de carga experimental. Lo que hace básicamente la bandera de carga experimental es brindarte control sobre el proceso de carga. Entonces, cada vez que se carga un módulo, pasa por diferentes fases donde se resuelve o se obtiene la fuente o se obtiene el formato o se transforma la fuente, y puedes engancharte en todo esto y tomar control total sobre ese proceso. En este ejemplo, tenemos loader.js que tiene resolve, get format y get source que eventualmente llama al formato predeterminado get en URL y contexto, pero puedes aplicar tu propia lógica allí para controlar cómo funciona el cargador. Esto nos brinda control total sobre la carga de módulos e inyección según nuestras necesidades. En esta parte del movimiento de cargadores esm de hilo, tenemos import.meta.resolve, que funciona en todos los entornos. Entonces, si estás en un entorno de navegador o en Node, si hicieras import.meta.resolve en este ejemplo en particular con foo, se resolvería a esa ruta de archivo. Si estuvieras en un navegador, entonces se resolvería a esa URL. Por lo tanto, import.meta.resolve funciona independientemente del entorno en el que nos encontremos.
We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career
Comments