Está en la página 1de 13

Contenido

I. INTRODUCCIÓN ................................................................................................................... 3
II. MARCO TEÓRICO ................................................................................................................ 4
2.1. Node Js ......................................................................................................................... 4
2.1.1. ¿Qué es Node.js? .................................................................................................. 4
2.1.2. ¿Qué puede hacer Node.js? ................................................................................. 5
2.1.3. ¿Qué es un archivo Node.js? ................................................................................ 5
2.1.4. ¿Por qué Node.js? ................................................................................................. 5
2.2. Funcionamiento de Node Js .......................................................................................... 6
2.3. NPM (Node Package Manager) .................................................................................... 8
2.4. Módulos Node Js ........................................................................................................... 9
2.4.1. Módulos nativos ......................................................................................................... 9
2.4.2. Módulos de archivos................................................................................................ 10
2.5. Módulo HTTP Node.js ................................................................................................. 10
2.6. Node.js como un servidor de archivos ........................................................................ 11
III. CONCLUSIONES ............................................................................................................ 12
IV. Bibliografía ....................................................................................................................... 13
“Node Js”

Tabla de Ilustraciones
Ilustración 1 - Thread Singleton .................................................................................................... 7
Ilustración 2 - Programación asíncrona ........................................................................................ 8
Ilustración 3 - Resultado de ejemplo en programación asíncrona ................................................ 8
Ilustración 4 - Ejemplo módulo HTTP ......................................................................................... 10
Ilustración 5 - Resultado del ejemplo de módulo HTTP .............................................................. 10

pág. 2
“Node Js”

I. INTRODUCCIÓN

Node.js es un entorno de programación basado en el lenguaje de programación


JavaScript, el cual actúa el cual actúa del lado del servidor, este cambia la noción de
cómo se debe trabajar un servidor, fue creado con la meta de permitir al programador
construir aplicación de red altamente escalables, esto quiere decir que el código puede
soportar decenas de miles de conexiones simultaneas, lo cual no lo limita, (como por
ejemplo los servidores web), esto resuelve el problema de los actuales lenguajes de
programación los cuales se veían limitado la a cantidad de memoria RAM disponible para
poder aceptar/iniciar una nueva conexión.

En el transcurso de este informe demostraremos como trabajar con este entorno de


programación, realizando ejemplos básicos de su funcionamiento, además se
explicaremos como se logró, demostrando la utilidad y sencillez de un entorno de
programación llamado Node.js.

pág. 3
“Node Js”

II. MARCO TEÓRICO


2.1. Node Js
Node.js es un entorno de programación del lado del servidor basado en el lenguaje de
programación JavaScript, que utiliza un modelo asíncrono, esto quiere decir que las
entradas y salidas no bloquean al programa, usa una programación orientada a eventos
con la particularidad que los eventos en esta plataforma son orientados a cosas que
suceden del lado del servidor y no del lado del cliente como los que conocemos
anteriormente en JavaScript común. Está basado en el motor JavaScript V8 un intérprete
ultra rápido escrito en C++ (con el que funciona el JavaScript de Google Chrome). Fue
creado en 2009 por Ryan Dahl.

La meta primordial del Node.js es proporcionar una manera fácil para la construcción de
programas de red escalables, este objetivo se da en vista de la actual situación que
presentan los lenguajes de programación de hoy en día, donde la cantidad máxima de
conexiones está limitada por la cantidad de memoria RAM que tenga el sistema, Node.js
resuelve esto cambiando la forma en que se realiza la conexión, ya que en vez de hacer
lo anteriormente descrito, dispara la ejecución de un evento dentro del proceso de motor
de node.js.

En teoría Node puede soportar tantas conexiones como sockets tenga el sistema. En un
sistema UNIX este límite puede rondar por las 65.000 conexiones, un número muy alto
teóricamente. Sin embargo, en la realidad, la cifra depende de muchos factores, como la
cantidad de información que la aplicación este distribuyendo a los clientes. A pesar de
esto una aplicación podría mantener 20.000-25.000 clientes a la vez sin haber apenas
retardo en las respuestas. Queremos recalcar que Node.js es un programa de servidor,
este no viene a reemplazar a lo que son Apache o Tomcat que son básicamente
servidores listos para instalar e implementar. (Campusano, Fredes, Cordero, & Badilla,
2014)

2.1.1. ¿Qué es Node.js?


Básicamente el Node JS es una implementación de JavaScript bajo el Runtime V8
(Con el que se Desarrolló Google Chrome) que permite que JavaScript funcione
como lenguaje utilizable del lado del Servidor. De esta forma se puede trabajar del
lado del cliente y del servidor con el mismo conocimiento para el desarrollo de desde
aplicaciones para celulares, Web Services, hasta sockets y real-time apps, entre
otras cosas. (Ezequiel, 2017)

pág. 4
“Node Js”

 Node.js es una infraestructura de servidor de código abierto

 Node.js es gratis

 Node.js se ejecuta en varias plataformas (Windows, Linux, Unix, Mac OS X,


etc.)

 Node.js utiliza JavaScript en el servidor

Node.js puede hacer

 Node.js pueden generar páginas con contenidos dinámicos

 Node.js puede crear, abrir, leer, escribir, borrar y cerrar archivos en el servidor

 Node.js pueden recopilar datos de formularios

 Node.js pueden añadir, borrar, modificar los datos de su base de datos

2.1.2. ¿Qué puede hacer Node.js?

 Node.js pueden generar páginas con contenidos dinámicos

 Node.js puede crear, abrir, leer, escribir, borrar y cerrar archivos en el servidor

 Node.js pueden recopilar datos de formularios

 Node.js pueden añadir, borrar, modificar los datos de su base de datos

2.1.3. ¿Qué es un archivo Node.js?

 Node.js archivos contienen tareas que se ejecutarán en determinados eventos

 Un caso típico es alguien intentando acceder a un puerto en el servidor

 Node.js archivos deben ser iniciadas en el servidor antes de tener ningún efecto

 Node.js archivos tienen extensión ".js"

2.1.4. ¿Por qué Node.js?


¡Node.js utiliza la programación asíncrona!

Una tarea común para un servidor web puede ser abrir un archivo en el servidor y
devolver el contenido al cliente.

Así es como PHP o ASP maneja una petición de archivo:

 Envía la tarea al sistema de archivos del equipo.

 Espera mientras el sistema de archivos se abre y lee el archivo.

 Devuelve el contenido al cliente.

pág. 5
“Node Js”

 Listo para manejar la siguiente solicitud.

Así es como Node.js maneja una petición de archivo:

 Envía la tarea al sistema de archivos del equipo.

 Listo para manejar la siguiente solicitud.

 Cuando el sistema de archivos se ha abierto y leer el archivo, el servidor


devuelve el contenido al cliente.

Node.js elimina la espera, y simplemente continúa con la siguiente petición.

Node.js se ejecuta, sin bloqueo de un solo subproceso, programación asíncrona, que


es muy eficiente de la memoria.

Algunas Características

 Rápido

 Escalable

 Manejo de Eventos

 Asíncrono

 Ligero

 Eficiente

 Funciona en sistemas distribuidos

 Curva de aprendizaje, corta.

 Comunidad Activa

2.2. Funcionamiento de Node Js


Al estar basado en el motor V8, está diseñado para correr en un navegador y ejecutar el
código de JavaScript de una forma extremadamente rápida.

Su Tecnología nos permite ejecutar este motor en el lado del servidor, abriendo un nuevo
abanico de posibilidades en cuanto al mundo de desarrollo se refiere. Para ello su
entorno ha desarrollado un conjunto amplio de librerías comparables a las de otras
plataformas. Y, por otro lado, se han eliminado algunas funcionalidades que en el entorno
de servidor no tenían sentido como por ejemplo el uso de Document Object Model.
Además trabaja con un único hilo de ejecución (Single Thread) que es el encargado de
organizar todo el flujo de trabajo que se deba realizar. (Ezequiel, 2017)

a) Single Thread (Único Hilo)

pág. 6
“Node Js”

La idea principal de Node.js: uso no bloqueante, event driven I/O, permanecer ligero y
eficiente en la superficie del uso intensivo de datos en tiemporeal de las aplicaciones que
se ejecutan en dispositivos distribuidos.

Frente a las tradicionales técnicas de servicio web donde cada conexión (solicitud)
genera un nuevo subproceso, retomando la RAM del sistema y finalmente a tope a la
cantidad de RAM disponible, Node.js opera en un solo subproceso, no utiliza el bloqueo
de llamadas de E/S, esto permite admitir decenas de miles de conexiones simultáneas.
(Ver ilustración 1) (Ezequiel, 2017)

Ilustración 1 - Thread Singleton

b) Programación Asíncrona

Éste es un concepto que toma especial importancia, dado que Node JS fue pensado
desde el primer momento para potenciar los beneficios de la programación asíncrona.

pág. 7
“Node Js”

Imaginemos que un programa tiene un fragmento de código que tarda cinco segundos
en resolverse. En la mayoría de las programaciones precedentes, durante todo ese
tiempo el hilo de ejecución se encuentra ocupado, esperando a que pasen esos cinco
segundos, o los que sea, antes de continuar con las siguientes instrucciones. En la
programación asíncrona eres capaz de liberar el proceso de modo que los recursos se
quedan disponibles para hacer otras cosas durante el tiempo de espera.

Un ejemplo claro de esto es una llamada a un servicio web, o una consulta a la base de
datos. Una vez realizada la solicitud generalmente pasará un tiempo hasta que se
obtenga la respuesta. Ese tiempo, por corto que sea, dejaría un proceso esperando en
la programación tradicional y en la asíncrona simplemente se libera.

En Node JS, o en JavaScript en general, cuando esa espera ha terminado y se ha


recibido la respuesta, se retomará la ejecución del código. Para definir las acciones a
realizar (código a ejecutar) cuando se haya terminado esa espera, se especifica el código
mediante funciones llamadas habitualmente "callbacks". Esas funciones contendrán las
líneas de código que ejecutan al de esos procesos de espera, y una vez se ha recibido
la respuesta. (Ezequiel, 2017)

Ilustración 2 - Programación asíncrona

Ilustración 3 - Resultado de ejemplo en programación asíncrona

2.3. NPM (Node Package Manager)


La herramienta de gestor de paquetes "NPM (package manager)" viene por defecto con
cada instalación de Node.js.

El código se organiza por medio de módulos, la idea de los módulos NPM es muy similar
a la de Ruby o java: un conjunto de componentes reutilizables, como los paquetes o

pág. 8
“Node Js”

librerías, disponibles públicamente a través de una fácil instalación a través de un


repositorio en línea, con la versión y la dependencia de gestión.

El módulo es un ecosistema abierto a todos, y cualquiera puede publicar su propio


módulo que será incluido en el repositorio de NPM. (Ezequiel, 2017)

NPM

 ExpressJS (Web para Node, con muchas utilidades como ser, routing, sesión,

 configuraciones de entorno, etc)

 Jade (Motor para páginas web)

 Socket.IO (Aplicaciones web en tiempo real, con un gran soporte de


exploradores y mobile)

 NowJS (Aplicaciones web en tiempo real de forma muy simple, con llamadas a
funciones js

 (clienteservidor/ servidorcliente)

 EveryAuth (Autenticaciones oAuth hecho simple con soporte a


muchas redes sociales)

 Mongoose (Driver para MongoDB)

2.4. Módulos Node Js


Un módulo en Node.js es simplemente una unidad de código relacionado con un único
fin.

Un módulo puede estar compuesto por 1 o más archivos, Node.js tiene un sistema simple
de carga de módulos, En Node.js, los archivos y los módulos tienen una correspondencia
de uno a uno, Un módulo puede depender de uno o más módulos de Node.js.

Existen 2 tipos de módulos: los módulos principales (Core modules) y los módulos de
archivo (File modules). (Sánchez, 2015)

2.4.1. Módulos nativos


Los módulos principales(nativos) son definidos en el código fuente de node en la carpeta
lib/ y tienen la preferencia de carga frente a cualquier otro módulo.

Mientras que la mayoría de los módulos son archivos JavaScript sin formato, algunos
módulos son imágenes binarias específicas de plataforma. Estos módulos se compilan
en el momento de la instalación, normalmente mediante Python y node-gyp. Puesto que
Cloud Services de Azure se basan en la carpeta node_modules que se implementa como
parte de la aplicación, los módulos nativos incluidos como parte de los módulos

pág. 9
“Node Js”

instalados deben funcionar en un servicio en la nube siempre que se haya instalado y


compilado en un sistema de desarrollo de Windows.

Azure App Service no es compatible con todos los módulos nativos y podría presentar
errores al compilar módulos con requisitos previos específicos. Aunque algunos módulos
conocidos, como MongoDB, tienen dependencias nativas opcionales y funcionan
correctamente sin ellas, dos soluciones alternativas han demostrado funcionar
correctamente con casi todos los módulos nativos actualmente disponibles. (Sánchez,
2015)

2.4.2. Módulos de archivos


Los módulos de archivo son módulos definidos por el usuario (como el que usaremos en
este artículo) y por lo general se registran en NPM para su uso. (Sánchez, 2015)

2.5. Módulo HTTP Node.js


Node.js tiene un módulo incorporado llamado HTTP, que permite a Node.js transferir
datos a través del Protocolo de transferencia de hipertexto (HTTP).

El módulo HTTP puede crear un servidor HTTP que escucha a los puertos del servidor y
responde al cliente. (W3.CSS, 2017)

Ilustración 4 - Ejemplo módulo HTTP

Ilustración 5 - Resultado del ejemplo de módulo HTTP

pág. 10
“Node Js”

2.6. Node.js como un servidor de archivos


El módulo del sistema de archivos Node.js le permite trabajar con el sistema de archivos
en su computadora. (W3.CSS, 2017)

Para incluir el módulo del sistema de archivos, se usa el require() método:

var fs = require('fs');

Uso común para el módulo del sistema de archivos:

 Leer archivos

o El fs.readFile()método se utiliza para leer archivos en su computadora.


 Crear archivos

o fs.appendFile() este método agrega contenido específico a un archivo.


Si el archivo no existe, el archivo será creado.
o fs.open() método toma una "bandera" como segundo argumento, si la
bandera es "w" para "escribir", el archivo especificado se abre para
escribir. Si el archivo no existe, se crea un archivo vacío.

o fs.writeFile() este método reemplaza el archivo y el contenido


especificados si existen. Si el archivo no existe, se creará un nuevo
archivo con el contenido especificado.

 Actualizar archivos

o fs.appendFile() este método agrega el contenido especificado al final


del archivo especificado.

o fs.writeFile() este método reemplaza el archivo y contenido


especificados.

 Borrar archivos

o Para eliminar un archivo con el módulo Sistema de archivos, use el


fs.unlink() método. Este método elimina el archivo especificado
 Renombrar archivos

o Para cambiar el nombre de un archivo con el módulo Sistema de


archivos, utilice el fs.rename() método.

o El fs.rename()método renombra el archivo especificado:

pág. 11
“Node Js”

III. CONCLUSIONES

pág. 12
“Node Js”

IV. Bibliografía
Campusano, C., Fredes, N., Cordero, F., & Badilla, C. (2014). Node.JS: Plataforma de fácil
programación de seervidores para aplicaciones de red escalables. Obtenido de
http://profesores.elo.utfsm.cl/~agv/elo322/1s14/projects/reports/G15/Informe_Latex.pdf
Ezequiel, C. (2017). monografias.com. Obtenido de
https://www.monografias.com/docs114/investigacion-y-desarrollo-aplicacion-tecnologia-
nodejs/investigacion-y-desarrollo-aplicacion-tecnologia-nodejs.shtml
Sánchez, J. (19 de 02 de 2015). frontendlabs.io. Obtenido de https://frontendlabs.io/2166--npm-
como-crear-modulos-nodejs-publicar-npmjs
W3.CSS. (2017). w3schools.com. Obtenido de
https://www.w3schools.com/nodejs/nodejs_intro.asp

pág. 13

También podría gustarte