¿Por qué uso NodeJS para básicamente todo lo que hago?

NodeJS es demasiado poderoso para limitarse solo a ejecutar su sitio web.

Tengo que escribir muchos guiones. Un montón de guiones. A menudo esto se debe a que hay muchas tareas que son demasiado complejas para hacer a mano o demasiado grandes para hacerlas a mano. Así que paso a escribir guiones para todo lo que lleva demasiado tiempo. Reduce los errores y aumenta el rendimiento. Como mis compañeros me odian por decir siempre;

Si lo haces más de una vez, escribe un guión.

Algunas tareas comunes son:

  • encuentre coincidencias o x, y, z en estas matrices gigantes.
  • eliminar todas las instancias de este valor, pero solo en estas condiciones.
  • compare x e y y luego produzca z.

Y sé que la mayoría de los programadores piensan qué tan bien Python o incluso C # o Go serían adecuados para estas tareas, pero hay tres razones clave por las que siempre elijo NodeJS.

No es bloqueo de E / S

Por defecto, NodeJS puede leer un archivo, analizar el contenido en la base de datos y escribir contenido nuevo en el archivo, sin siquiera pensarlo. Si bien hay bibliotecas para Python y similares para agregar habilidades asincrónicas, de manera predeterminada, Python no es asincrónico, una función siempre debe ejecutarse antes de que ocurra la siguiente.

NodeJS no sufre este problema, ya que está diseñado para manejar solicitudes que fluyen constantemente del tráfico web y también está diseñado para manejar todo en segundo plano (publicación de archivos, correo, etc.).

Esto lo hace perfecto para mi tipo de tareas: a menudo extraigo la información que busco y la almaceno en una base de datos para recuperarla posteriormente. Hago esto tanto para conservar mis datos como para liberar memoria al no tener que mantener toda la matriz. Entonces puedo recuperar la información de la base de datos, manipularla y alterarla, todo mientras se está ejecutando en segundo plano, almacenando más información en la base de datos.

Las solicitudes de E / S también se manejan en un hilo separado en NodeJS del hilo principal de ejecución. Lo que esto significa es que un archivo particularmente grande o problemático que se lee no obstaculizará el rendimiento del programa principal (por supuesto, siempre que el contenido del archivo no sea inmediatamente necesario).

Se cuida solo

Al escribir un script desechable que solo usaré unas pocas veces, la optimización de ese código no es necesariamente una prioridad en mi lista de prioridades. La prioridad es que se escriba y que se ejecute. Ahí es donde el motor V8 (C ++) en el que se compila NodeJS te arroja un hueso.

Cuando no tiene más remedio que llamar a las matrices a la memoria y manipularlas, a veces matrices muy grandes, puede comenzar a preocuparse por el estado de su máquina y la cantidad de memoria que se está utilizando. Afortunadamente, V8 maneja la recolección automática de basura.

Lo que esto significa es que cada vez que he ignorado un bloque de información, por ejemplo, elimino un índice de una matriz, esa memoria se borra automáticamente y se libera nuevamente en el siguiente barrido. Si bien el proceso de recopilación y verificación en realidad puede ser un poco intenso, significa que cuando estoy iterando rápidamente a través del código no necesito prestar una gran atención a la administración de mi memoria, y puedo confiarle a V8 que se encargue de todo matices

Oh, quieres resultados interactivos?

Una de las razones principales por las que se creó NodeJS fue para servir sitios web (para decirlo de manera muy simple). Entonces, cuando tengo que mostrar o compartir los resultados de mis scripts, como dar a otros la opción de ver el resultado e incluso cambiar los parámetros de un script, puedo hacerlo invocando el verdadero propósito de NodeJS.

La facilidad de entregar mis resultados directamente en un servidor utilizando un lenguaje de plantillas en NodeJS es algo que creo que doy por sentado. La plantilla que suelo usar es EJS porque, como el script en sí, es directo al grano. Tiene un trabajo y lo hará bien.

Ahora sé que otros lenguajes de secuencias de comandos pueden servir páginas web y sé que no requiere mucha más energía de lo que se necesita, por ejemplo, Python, pero hay una cierta majestuosidad en poder escribir la secuencia de comandos (intensiva) y servir todo en la misma ejecución, sin tener que abandonar el ecosistema NodeJS.

Esas son las razones clave por las que uso NodeJS para básicamente todo lo que hago ahora. Ya sea que esté construyendo un sitio web, hablando con una base de datos o escribiendo un script para automatizar un proceso de archivo, el valor predeterminado es NodeJS. Te recomiendo la próxima vez que escribas un guión rápido, prueba NodeJS.

¡Hablemos a continuación sobre si está de acuerdo!