Node Js

Contenido I. INTRODUCCIÓN .............................................................................................

Views 192 Downloads 4 File size 639KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

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

2.2.



Rápido



Escalable



Manejo de Eventos



Asíncrono



Ligero



Eficiente



Funciona en sistemas distribuidos



Curva de aprendizaje, corta.



Comunidad Activa

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)



2.4.

Mongoose (Driver para MongoDB)

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-tecnologianodejs/investigacion-y-desarrollo-aplicacion-tecnologia-nodejs.shtml Sánchez, J. (19 de 02 de 2015). frontendlabs.io. Obtenido de https://frontendlabs.io/2166--npmcomo-crear-modulos-nodejs-publicar-npmjs W3.CSS. (2017). w3schools.com. Obtenido de https://www.w3schools.com/nodejs/nodejs_intro.asp

pág. 13