¿Qué es Node.js?

Node.js es un entorno JavaScript de lado de servidor y dirigido por eventos, soporta protocolos TCP, DNS y HTTP.

Uno de los puntos fuertes de Node.js es su capacidad de mantener muchas conexiones abiertas y esperando. Este valor puede ser aumentado para servir contenido estático, sin embargo, si se sirven aplicaciones web dinámicas en PHP u otro lenguaje es probable que al poner un valor alto el servidor se quede bloqueado ante muchas conexiones esto dependerá del trabajo que la aplicación web de lado del servidor y de su capacidad hardware.

Cita 5 de las principales ventajas de utilizar Node.js

Con node puedes utilizar JavaScript como de lenguaje de scripting en tu consola como, por ejemplo, bash, permite utilizar el mismo lenguaje tanto en cliente con el servidor.

Ofrece muy buena gestión de paquetes gracias a NPM (si quieres hacer algo, probablemente exista una librería/paquete que ya lo ofrezca).

Con Node.js es posible hacer en el servidor, todo lo que necesitas – acceso a ficheros, a bases de datos, conexiones de clientes, entre otros, está basado en eventos, así que toda la filosofía asíncrona que ya utilizas con AJAX en tu cliente, la puedes pasar al servidor.

3 aplicaciones que en la actualidad utilicen Node.js

  • Netflix
  • Yahoo
  • mozilla

Diferencias entre Node.js y PHP.

PHP fue una tecnología excepcional en sus días. Su éxito y popularidad vinieron de su facilidad de aprendizaje y uso, la facilidad de alojamiento y la abundancia de scripts, aplicaciones y bibliotecas.
Node.js es relativamente joven, pero ya es la plataforma de más rápido crecimiento por el ritmo de las contribuciones (el número absoluto superará otros lenguajes en pocos años. El lenguaje JavaScript es el lenguaje más popular en el mundo sin lugar a dudas. Muchas herramientas son portadas a Node.js con pequeñas o ninguna modificación del entorno del navegador.

¿Es necesario instalar el servidor Apache para ejecutar aplicaciones basadas en Node.js?

No es necesario dado que node.js posee “nodeserver” para gestionar nuestras paginas web.

Instalar keystonejs

Keystonejs se trata de un CMS basado en node.js y javascript, el primer paso sera actualizar nuestra maquina apt update && apt upgrade.

A continuación instalamos curl apt install curl

Descargamos e instalamos node.js y sus dependencias

Primero para poder utilizar npm vamos a ejecutar el script que podemos encontrar en la página oficial:

root@debian:/home/usuario# curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -

El siguiente paso es instalar node.js, nodejs depende de rlwrap por tanto también lo instalaremos:

root@debian:/home/usuario# apt install nodejs
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
Se instalarán los siguientes paquetes extras:
  rlwrap
Se instalarán los siguientes paquetes NUEVOS:
  nodejs rlwrap
0 actualizados, 2 nuevos se instalarán, 0 para eliminar y 0 no actualizados.
Se necesita descargar 7.323 kB/7.399 kB de archivos.
Se utilizarán 35,5 MB de espacio de disco adicional después de esta operación.
¿Desea continuar? [S/n] s

En el caso de que de problemas de dependencias realizamos un apt update y con eso deberíamos de solucionarlo.

Y por último utilizamos “npm” para instalar los siguientes módulos:

root@debian:/home/usuario# npm install -g npm
root@debian:/home/usuario# npm install -g generator-keystone
root@debian:/home/usuario# npm install -g yo
root@debian:/home/usuario# npm install --save underscore

Instalamos MongoDB como BD

Vamos a trabajar con la base de datos en MongoDB por lo tanto vamos a instalarla apt install mongodb

Crear carpeta para proyecto

Nos loguemos como usuario y creamos la carpeta “keystoneapp”

usuario@debian:~$ mkdir keystoneapp
usuario@debian:~$ cd keystoneapp/

Ejecutamos el CMS

usuario@debian:~/keystoneapp$ yo keystone
? ==========================================================================
We're constantly looking for ways to make yo better!
May we anonymously report usage statistics to improve the tool over time?
More info: https://github.com/yeoman/insight & http://yeoman.io
========================================================================== Yes

Welcome to KeystoneJS.

Realizar configuraciones necesarias para la instalacion del CMS

? What is the name of your project? iaw8
? Would you like to use Jade, Nunjucks, Twig or Handlebars for templates? [jade | nunjucks | twig
 | hbs] hbs
? Which CSS pre-processor would you like? [less | sass | stylus] sass
? Would you like to include a Blog? Yes
? Would you like to include an Image Gallery? Yes
? Would you like to include a Contact Form? Yes
? What would you like to call the User model? User
? Enter an email address for the first Admin user: admin@juanluramirez.com
? Enter a password for the first Admin user:
 Please use a temporary password as it will be saved in plain text and change it after the first
login. admin
? Would you like to include gulp or grunt? [gulp | grunt | none] gulp
? Would you like to create a new directory for your project? No
? ------------------------------------------------
    KeystoneJS integrates with Mandrill (from Mailchimp) for email sending.
    Would you like to include Email configuration in your project? No
? ------------------------------------------------
    KeystoneJS integrates with Cloudinary for image upload, resizing and
    hosting. See http://keystonejs.com/docs/configuration/#services-cloudinary for more info.

    CloudinaryImage fields are used by the blog and gallery templates.

    You can skip this for now (we'll include demo account details)

    Please enter your Cloudinary URL:
? ------------------------------------------------
    Finally, would you like to include extra code comments in
your project? If you're new to Keystone, these may be helpful. Yes
  • Hbs: Modulo para la utilización de plantillas
  • Sass: es una biblioteca que proporciona enlaces para Node.js a LibSass
  • Gulp: Gulp es un conjunto de herramientas que te ayuda a automatizar tareas dolorosas o que consumen mucho tiempo en tu flujo de trabajo de desarrollo.

Arrancar servidor node.js

Una vez realizado los pasos anteriores arrancamos el servidor:

root@debian:/home/usuario/keystone# node keystone
------------------------------------------------
Applying update 0.0.1-admins...

------------------------------------------------
iaw8: Successfully applied update 0.0.1-admins.

Successfully created:

*   1 User

------------------------------------------------
Successfully applied 1 update.
------------------------------------------------

------------------------------------------------
KeystoneJS Started:
iaw8 is ready on port 3000
------------------------------------------------

GET / 200 100.731 ms

Nos loguearemos con el usuario administrador que será el correo que hemos especificado en la instalación.

Y crearemos el usuario, al cual vamos a llamar “usuario”.