Nodejs se considera un entorno de ejecución, es decir nos permite, ejecutar JavaScript sin necesidad de estar en un navegador web.
Para lograr esto, se utilizo el motor V8 desarrollado por google y se embebió dentro de un programa en C++.
Node en un principio está pensado para no tener que usar hilos del procesador, gracias a su naturaleza asíncrona, usamos callbacks y llamadas para gestionar los procesos. Esto nos permite que un sólo hilo pueda atender a todas las peticiones del sistema, sin tener que esperar a una petición para atender a la siguiente.
Esto mismo es su principal problema, aunque node esta indicado para atender múltiples peticiones de forma simultánea, No esta indicado para procesos que demanden gran cantidad de CPU, cómo el renderizado de imágenes vídeos o audio en streaming.
A diferencia del uso de JavaScript en un navegador, aquí no tenemos acceso a recursos cómo window, o Document.
Para acceder al sistema, desde node, tenemos módulos que podemos ir añadiendo a nuestro proyecto, de esta manera dotamos a Node.js de más utilizados, cómo la lectura de ficheros cómo los famosos JSON utilizando fs o acceso a la configuración del sistema usando sys.
Al contrario que se indica en las últimas versiones de EMCScript, el uso de módulos en nuestras apps de Node.js, están de forma predeterminada en Common-js y aunque esto ultimo puede configurarse, puede llegar a dar problemas según el tipo de librería o framework que utilicemos, por lo tanto no recomiendo el uso de estos, si no has utilizado antes con node.js.
Un proyecto de Node.js tiene de base tres ficheros y una carpeta.
Carpeta del proyecto ├── package.json ├── package-lock.json ├── main.js └── node_modules
Este fichero JSON de configuración es el que contiene la información del proyecto, cómo el nombre, la versión o los autores, también se definen los scripts de inicio y que dependencias serán de desarrollo y cuales no.
Un ejemplo de este fichero sería el siguiente:
{
"name": "nodejs",
"version": "1.0.0",
"description": "Proyecto de ejemplo de Node.js",
"main": "index.js",
"scripts": {
"start": "node index.js",
"dev": "nodemon index.js"
},
"keywords": ["node", "nodejs", "javascript"],
"author": "Altaskur",
"license": "ISC",
"dependencies": {
"express": "^4.17.1"
},
"devDependencies": {
"nodemon": "^2.0.7"
}
}Para ejecutar una aplicación de express, indicaremos dentro del apartado "scripts", la abreviatura que queramos usar para iniciar la aplicación, lo más común es usar start, dev, build o test.
- Start: Inicia la aplicación en modo producción.
- Dev: Inicia la aplicación en modo desarrollo, en nuestro caso usando Nodemon.
- Build: Utilizado para compilar el proyecto, en caso de que sea necesario, muy común en proyectos de Frontend.
- Test: Utilizado para ejecutar los test de la aplicación.
ejemplo del apartado de scripts:
"scripts": {
"start": "node index.js",
"dev": "nodemon index.js"
},Ahora para ejecutar nuestra aplicación, solo tendremos que ejecutar npm run seguido del nombre definido en el apartado de scripts.
npm run devTen en cuenta que con
startno es necesario usarrunsimplemente connpm startserá suficiente.
Este fichero es generado automáticamente por npm, y contiene la información de las dependencias que se han instalado en el proyecto, así cómo las versiones de las mismas. Es recomendable no modificar este fichero, ya que puede dar problemas en la instalación de las dependencias.
Este fichero no debes subirlo a tu repositorio, ya que se genera automáticamente, añade el fichero a tu
.gitignorepara evitar subirlo a tu repositorio.
Esta carpeta contiene todas las dependencias que se han descargado del proyecto, una vez ejecutamos npm install, o su versión abreviada npm i.
No debes subir esta carpeta a tu repositorio, ya que ocupa mucho espacio y con tan solo ejecutar
npm ionpm installse descargaran todas las dependencias de nuevo.
Este es el fichero de inicio, del cual partirá nuestra aplicación, de normal se encuentra en la carpeta src y puedes encontrarlo también cómo index.js