Que es un módulo?
Es una funcionalidad que esta organizada en uno o varios archivos JavaScript y puede ser reultilizada en la aplicación siendo esta es la razon por la cual organizamos el codigo en modulos.
Cual es la utilidad de los módulos en node.js?
Gracias a que podemos reutilizar los módulos en la aplicacion ya que en ves de tener un solo archivo toda la funcionalidad podemos separarla en varios módulos que luego pueden comunicarse entre si para intercambiar esa funcionalidad asi si identificamos un problema en algun módulo podemos ir exactamente a fixear el bug.
Cuales son las ventajas de crear modulos?
- Evitar repetir el código
- Reultilizar código
- Mayor facilidad para encontrar bugs
- Es mas facil modificar el código
- Mayor facilidad para añadir una funcionalidad
Cómo se crea un módulo?
Cualquier archivo javascript se puede considerar un módulo.
Como se exportan e importan los modulos?
Importar es darle acceso a funciones y elementos definidos en un módulo a otro módulo pero primero debemos exportar el elemento desde el modulo antes poder usarlo en otro. Ultilizando el objeto module.exports podemos exportar un modulo y a traves del require recibirlo en el otro modulo, usamos destructuring en este proceso.
EJ:
Si ejecutamos en este pequeño fragmento de código node server.js podemos ver como la funcion es llamada y funciona.
La ventaja de esto es que podemos ultilizar el elemento exportado en cualquier modulo disponible.
Módulos principales de node.js
Módulos built- in
Son módulos que ya vienen incorporados en Node.js y no necesitamos instalarlos y son muy ultiles para realizar tareas comunes al trabajar con el.
Esto serian ejemplos de algunos de los módulos mas utlilizados en node.js: http, https, fs(file system), os( operating system), path.
- Módulo console:
Es un módulo built-in que implementa funcionalidad similar a la consola de un navegador web. El ejemplo mas claro de este modulo seria el ultilizado console.log() pero tambien tiene otros metodos utiles.
Módulo process: Este módulo nos provee informacion sobre el proceso de node.js que se esta ejecutando y tambien nos da cierto control sobre el, tiene muchos metodos utiles pero de los mas notables es process.memoryUsage() nos permite saber la memoria que consume nuestra app
Módulo OS: Este módulo nos permite tener informacion sobre el sistema operativo sobre el que se esta ejecutando Node
-Módulo timers: Contiene funciones que ejecutan codigo despues de un cierto periodo de tiempo, 3 de las funciones mas utiles de este módulo son:
-setTimeOut() : Es una funcion para ejecutar código despues de un numero especifico de milisegundos.
Revise 3 parametros, el primer la funcion a ejecutar, el segundo el retraso en milisegundos 1000ms = 1s y el tercero los argumentos a pasar a la función si los necesita.
-setImmediate(): Se ejecuta determinado por el ciclo del event loop de Node.js, siempre después de todo el código síncrono.
En este ejemplo podemos ver como funciona la funcion y el orden de ejecucion.
-setInterval(): Es para ejecutar código un numero infinito de veces con un retraso especifico de milisegundos.
En este ejemplo se ejecutando la funcion cada 4 segundos = 4000ms
Recibe de primer parametro la funcion a ejecutar, el segundo el intervalo en milisegundos de cada cuanto se ejecutara la funcion y el tercero los parametros de la funcion a ejecutar si los necesita.
-Módulo fs(File Sytem): Es un módulo que contiene funcionalidades muy utiles para trabajar con el sistema de archivos.
Contiene muchas operaciones utiles, y algo curioso de este módulo es que todos los metodos que contiene son asíncronos por defecto
con el metodo fs.readFile , recibe como primer parametro la direccion del lugar a leer, el segundo, especificamos como se va a codificar los caracteres y devuelve un callback.
Con el metodo rename podemos cambiar el nombre del archivo.
Con appendfile añadimos contenido al final de un archivo.
En un archivo html los elementos se incluyen entre las etiquetas Por lo cual el
hi</> se agrega al final.
con fs.writeFile podemos remplazar todo el contenido de un archivo.
Como vemos lo que teniamos antes en el html se remplazo por lo que le pedimos.
y fs.unlink nos permite eliminar archivos.
Todas estas operaciones son asincronas, pero si queremos trabajar con la versio sincrona del metodo solo tenemos que añadirle Sync al final ej: fs.readFileSync.
Con esto concluimos algunos de los modulos mas usados en node.js