6 cosas que debes saber sobre Node.js

JavaScript se está comiendo el mundo, con nuevas herramientas y mejoras que llegan a un ritmo vertiginoso. Con Node.js, un sistema de tiempo de ejecución de código abierto inventado en 2009 por Ryan Dahl, ese alcance se ha extendido al lado del servidor.

Node.js se ha vuelto tremendamente popular, y los programadores de todo el mundo lo utilizan para crear API y construir una nueva matriz de interoperabilidad en Internet. Joyent ha sido el patrocinador principal de Node.js desde el principio. En el New Tech Forum de esta semana, Ben Wen, vicepresidente de marketing de productos de Joyent, describe seis cosas que debe saber sobre el fenómeno que está sacudiendo el desarrollo de backend. - Paul Venezia

Node.js es un sistema en tiempo de ejecución para crear (principalmente) aplicaciones del lado del servidor. Es más conocido como un medio popular para que los codificadores de JavaScript creen API web en tiempo real.

Pero Node.js no es un marco de JavaScript; de hecho, varios autores han escrito marcos excelentes específicamente para Node.js, incluidos Express.js, Restify.js y Hapi.js. Entonces, ¿qué es exactamente este fenómeno que se abre camino en aplicaciones web, envoltorios de sistemas operativos, microcontroladores y robots?

En esencia, Node.js es un motor de servidor simplificado y altamente personalizable, un proto-servidor, por así decirlo, porque listo para usar no hace nada hasta que lo configura. Este proto-servidor procesa en un bucle, listo para aceptar y responder a las solicitudes. Cualquiera de esas solicitudes en sí puede iniciar otras solicitudes a alguna otra parte del sistema, como leer un archivo del disco o enviar una señal para hacer girar un motor en un brazo robótico. Ese ciclo, conocido como ciclo de eventos, es la parte del "tiempo de ejecución".

Node.js se envía con bibliotecas y conectores de caballo de batalla, como los relacionados con HTTP, SSL, compresión, acceso al sistema de archivos y TCP y UDP sin procesar. JavaScript, ya ajustado para el entorno de bucle de eventos de un navegador web para GUI y eventos de red, es un gran lenguaje para conectar estos conectores. Puede encajar conectores en el bucle de eventos casi tan fácilmente como puede encajar piezas de Lego juntas. Si lo hace, podrá crear un servidor web dinámico y sencillo con unas pocas líneas de JavaScript.

En resumen, Node.js es un sistema en tiempo de ejecución que facilita la creación de una red u otros servidores de aplicaciones controlados por eventos. Aquí están las seis cosas que necesita saber al respecto.

1. JSON ha ganado

JSON (JavaScript Object Notation) es un formato de intercambio de datos práctico, compuesto y muy popular. JSON ha permitido a los desarrolladores de JavaScript construir rápidamente API y fomentar la interoperabilidad a escala, un objetivo clave para los codificadores de Node.js. La cruda simplicidad de JSON se puede expresar en solo cinco diagramas de análisis sintáctico ferroviario, en particular sin el acicalamiento consciente de XML y sus intrigantes amigos (SOAP, XSD, WS- *, RELAX-NG y sus interminables reuniones de comité).

JSON y JavaScript han reforzado la importancia de cada uno. En los primeros días de la Web, los datos dinámicos en el navegador tenían que ser manipulados, filtrados y operados por el único lenguaje razonablemente comprensible que no era un complemento: JavaScript. Independientemente de su formato original presentable en red, los datos debían agruparse en un objeto JavaScript. La dependencia de JSON para la descripción de datos de propósito general dio lugar a bases de datos NoSQL orientadas a documentos como MongoDB y CouchDB. Todo es JSON todo el tiempo hoy.

2. JavaScript está en todas partes

JavaScript es un lenguaje peculiar, orientado a objetos y similar a C. Es la única opción para desarrollar aplicaciones en el navegador, con un nuevo marco que se presenta cada semana para atraer a los desarrolladores. Y con Node.js, JavaScript se ha extendido al servidor. Los equipos de implementación de la competencia han impulsado a los intérpretes de JavaScript hacia adelante, por lo que el motor V8 de Google es respetablemente rápido, lo suficientemente rápido como para residir en el núcleo de Node.js.

JavaScript también tiene la capacidad interna para manejar el mecanismo de bucle de eventos de una manera sencilla. Otros lenguajes tienen esta capacidad, que utilizan sus propios sistemas de eventos. Python tiene Twisted y Ruby tiene EventMachine. Pero debido a la historia, ambos sistemas de bucle de eventos vienen cargados de formas relativamente fáciles de cometer un tipo particular de error de rendimiento, mientras que JavaScript permanece relativamente libre de este peligro.

JavaScript también se ejecuta en muchos entornos de sistemas operativos, ya que históricamente tuvo que admitirlos en el navegador. Esto, junto con la biblioteca libuv para ayudar a abstraer algunas de las diferencias del sistema operativo, significa que Node.js tiene una amplia huella.

Pero la fuerza más grande para la migración de JavaScript al lado del servidor es humana. Los programadores tienen que cambiar de contexto menos mentalmente entre un navegador web y el servidor. Incluso hay esfuerzos para unificar los entornos entre el cliente y el servidor para que el código pueda ejecutarse igualmente bien en cualquier ubicación, simplificando aún más el modelo y conduciendo a una mayor productividad.

3. Se anima a compartir

El espíritu de la comunidad de Node.js es "compartir alegremente". Es tremendamente fácil compartir paquetes de código de biblioteca, técnica, cultural, procedimental y legalmente. Node Package Manager se incluye con Node.js y se ha convertido en un repositorio de casi 50.000 paquetes, por lo que es probable que otro desarrollador ya haya empaquetado una solución para su problema, o incluso algunos menos comunes.

La filosofía del espacio de nombres de Node.js es esencialmente la ausencia de uno, lo que permite que cualquier autor publique con un nombre de módulo no utilizado en el repositorio público compartido. Compartir código bajo la licencia de código abierto del MIT es muy recomendable en la comunidad, lo que también hace que la polinización cruzada del código sea relativamente libre de preocupaciones (y sin abogados) desde una perspectiva de propiedad intelectual. Por último, la comunidad está muy comprometida con la vinculación de bibliotecas C interesantes como la visión por computadora (OpenCV) y la biblioteca de caracteres ópticos de código abierto Tesseract. Este último, por ejemplo, posibilita proyectos de fin de semana como Imdex que procesan imágenes de la Web para que se puedan buscar automáticamente en busca de contenido escrito.

4. Node Package Manager funciona de forma amplia

Hablando de la gestión de las dependencias de la biblioteca, el Node Package Manager merece ser llamado. Node Package Manager es la raíz de casi todos los sistemas de implementación para Node.js y es la base de los muchos proveedores de PaaS (plataforma como servicio) para Node.js, lo que hace que sea algo fácil mover aplicaciones más pequeñas entre proveedores. Su gestión de paquetes simple y confiable ha permitido que el ecosistema de Node crezca extremadamente bien en la historia reciente, hasta el punto de que el servicio público subyacente ahora necesita escalar al siguiente nivel.

5. Minimalismo 'Pilas no incluidas'

Las aplicaciones de Node.js y el propio Node.js Core se dividen en pequeños módulos que se componen y comparten. Cada paquete y herramienta puede ajustarse y diseñarse para que sea manejable. Estos se pueden hornear juntos, a menudo sin demasiado amasado innecesario. La naturaleza despreocupada y de baja barrera de la creación de un módulo también fomenta la experimentación en la comunidad, y hay bastante superposición y experimentación en la población de paquetes. Cuando se ejecuta bien, cada paquete normalmente maneja una tarea (por ejemplo, node-optimist.js: 'análisis de opciones de peso ligero [línea de comandos]').

6. Instrumentación

Finalmente, Node.js está bien instrumentado para su uso en producción. Lo que eso significa es que existen las herramientas para ayudar a que una aplicación alcance el rendimiento y la preparación de producción completos. Como ocurre con cualquier tecnología en desarrollo, hay áreas en las que más documentación, herramientas y mejores prácticas podrían resultar útiles. Pero a medida que Node.js se dirige hacia su próximo lanzamiento importante, se encuentra en una base bastante sólida.

Nodo en contexto

Si conoce JavaScript, Node.js es una suave rampa de acceso a la computación asincrónica para la Web. Y da la casualidad de que Node.js es adecuado para resolver problemas web exactamente de este tipo: desafíos de integración y pegamento, con llamadas en cascada a API tras API.

¿Dónde no funciona Node.js tan bien? No es totalmente apropiado en lugares donde un cálculo de un solo subproceso será el atraco, como algunos tipos de aproximación o clasificación sucesivas. En esos casos, es más eficiente para Node.js enviar la solicitud a una biblioteca independiente dedicada a la tarea, donde se puede distribuir entre cientos o miles de procesadores.

Node.js está madurando rápidamente y se está implementando en cada vez más sistemas críticos para la misión y los ingresos, como las infraestructuras de comercio electrónico Black Friday. Es fácil comenzar con Node.js y, sin embargo, Node.js es lo suficientemente profundo como para manejar las complejidades de la Web moderna. Si está creando su sitio web de próxima generación, especialmente API para la integración web y móvil, o si está creando algo nuevo que depende de los servicios subyacentes, Node.js es un sistema en tiempo de ejecución que podría funcionar muy bien para usted.

New Tech Forum proporciona un medio para explorar y discutir la tecnología empresarial emergente con una profundidad y amplitud sin precedentes. La selección es subjetiva, basada en nuestra selección de las tecnologías que creemos que son importantes y de mayor interés para los lectores. no acepta material de marketing para su publicación y se reserva el derecho de editar todo el contenido contribuido. Envíe todas sus consultas a [email protected]

Este artículo, "6 cosas que debe saber sobre Node.js", se publicó originalmente en .com. Para conocer las últimas noticias sobre tecnología empresarial, siga .com en Twitter.