Hola a toda la comunidad! Mi nombre es Bruno, y llevo un tiempo en DesdeLinux como usuario. Es hora de que haga mi primera publicaciones en esta comunidad 🙂
Hoy les traigo una guía sobre NodeJS y Sails.js
Node.js
Es un entorno de programación, basado en el lenguaje Javascript con una arquitectura orientada a eventos, ideal para la programación asincrónica. Node, está basado en el motor V8 de google.
Mantiene una comunidad activa open source, que han escrito muchos módulos para facilitar nuestro desarrollo.
Una de ellas es Socket.io (Permite al servidor enviar actualizaciones en tiempo real al cliente, por ejemplo el seguimiento de un GPS)
¿Para qué sirve?
Node está diseñado para las situaciones en el que el tráfico es demasiado grande, haciendo que la lógica del servidor y el procesamiento no sean necesariamente mayores. Y no sólo eso, sino que en tiempo real y con una gran escalabilidad!
¿Por qué Node?
1) Es open source.
2) Si alguna vez pensaste en usar un único lenguaje tanto del lado del servidor como del cliente, aquí la solución.
3) Escalabilidad y Concurrencia.
4) Etc.
Sails.js
¿Qué es Sails?
Es un framework MVC que imita el modelo de ruby on rails (Si, escucharon bien :D) para la creación de pequeñas o grandes aplicaciones de forma rápida, sencilla y segura. Además cuenta con soporte para los requisitos de aplicaciones modernas. No importa que base de datos utilices, Sails provee una capa de abstracción, que hace que la elección de la misma, le sea indiferente. Sails cuenta con:
– La capacidad de crear RESTfull JSON API de forma automática.
– Trae incorporado el modulo Socket.io.
– Genera rutas automáticas para sus controladores.
– Provee sistema de autenticación de usuarios y control de acceso basado en roles.
– Grunt como Task Runner (Tareas automáticas como minificación, compilación, testing, etc)
– Assets: Todos los archivos de sus correspondientes directorios (css,js) son unificados en un único archivo y minificados, para reducir considerablemente la carga de la página y la cantidad limitada de peticiones del navegador.
Instalación de Node.Js
sudo apt-get install python-software-properties python g++ make
sudo add-apt-repository ppa:chris-lea/node.js
sudo apt-get update
sudo apt-get install nodejs
Instalación de Sails.Js
Última versión estable:
sudo npm -g install sails
Crea el esqueleto de directorios:
sails new testProject
Ingresamos a nuestro Proyecto:
cd testProject
Iniciamos el servidor:
sails lift
Yeeeeeeeeeeah! ingresamos en http://localhost:1337/
API:
– Controladores
– Adaptadores
– Modelos
– Políticas
– Servicios
ASSETS:
– images
– js
– styles
favicon
robots
CONFIG:
– locales
404.js, 500.js …..
routes.js
session.js
sockets.js ……..
NODE_MODULES:
– ejs (motor de plantillas)
– grunt
– optimist
– sails-disk
VIEWS:
– Home (aquí se encuentre la plantilla de la raiz, localhost)
– 404.ejs
– 500.ejs
– layout.ejs (Para los que usaron rails, layouts.ejs se comporta igual que layouts.html.*)
FIN
Hasta aquí mis conocimientos, y espero haber sido de ayuda para muchos… Soy nuevo en esta tecnología por lo que cualquier crítica constructiva es bienvenida 🙂
Este post surgió realizarlo, porque me encuentro desarrollando una especie de red psicosocial (Nada de otro mundo). Con fines de aprender, y pocos recursos. la idea es realizar también un servidor casero que la soporte (Seguramente haga un tutorial de ello) Como dije antes, los recursos son pocos, por lo que la optimización es muy importante. (y aunque no lo fueran también ^^)
Me sorprende lo fiel que emula a RoR, aunque muchos odian a RoR por su bajo rendimiento (sin configurar) la limpieza de código marca tendencia.
Muy interesante el tema, espero lo sigas desarrollando, felicidades.
Yo no odio RoR la verdad, la cosa es que la filosofía de ruby de «hay muchas maneras de hacer la misma cosa» suele ser un problema porque no todas son realmente las mas eficientes y cuando quieres resolver una duda, en muchos casos tienes ese problemita en el que todos te responden con una manera distinta de hacer lo mismo y sueles confundirte mas D:
Respecto a esto de frameworks para Node, pues tampoco es para cosas enormes o grandes, Node se usa junto a otros frames como Django para cosas puntuales, creo que el ejemplo de Mejorando.la es así, arman todo el sitio y manejo de sus bases de datos con Django pero las cuestiones en tiempo real se las dejan a Node, aunque no estoy seguro así que no puedo hablar demasiado sobre eso.
Creo que es así como vos decís, usan Django pa la base del sitio y Node para las cosas en tiempo real … Bueno al menos es lo que siempre le escucho decir a freddy vega
NodeJS no es como Django ni como PHP, ni ruby. Sino que es un servidor tal como Apache, Nginx, etc
Sails es el framework que hace uso de nodejs y express(otro framework) junto con algunos modulos como socket.io, para la creacion de aplicaciones web.
Saludos!
entonces si quiere incluir un chat hecho con nodejs con una pagina en pythoncon Django(para seguir con el ejemplo de mejorando.la), tendría que usar un frame, o asignar a apache(si ese es el caso, no tengo idea de que servidor usa python) la ruta http://miweb.com y a node.js http://miweb.com/chat y comunicarlos
Oye que super interesante ….
Lo que no termine de etender es para que se usa Node JS para la web ??
es una alternativa a apache, con la ventaja de ser en tiempo real(aplicaciones que están comunicándose todo el tiempo y no solo cuando se realiza la petición).
NodeJS no es una alternativa (o reemplazo) a Apache, NGINX o cualquier otro servidor web. NodeJS es un intérprete de JavaScript para el servidor, permitiendo crear aplicaciones con este lenguaje que de otra forma requerirían el uso de lenguajes como Java, Python, Ruby o PHP.
Si, tal vez me expresé mal. Lo que quise hacer llegar, es que node.js ejecuta su propio servidor y no necesita de 3ros, para funcionar (apache, nginx, cherokee, etc)
Saludos!
muy bueno, espero mas tutoriales para poder seguir a node.js y hacer algo en tiempo real
Acá te dejo un libro de 200 páginas, con una introducción a Node.js a través de Koans. Tiene una into a Node.js, y la «resolución» de una parte de un problema planteado (el ejemplo es twitter) con Express como framework de cabecera…..
http://nodejskoans.com/
PD: Sails está hecho en Base a Express, por lo general la mayoria lo están.
Saludos!
Excelente aporte Bruno.. Bienvenido 😀
Gracias a vos y toda la comunidad por dejar ser parte de la misma 🙂 Saludos!
Muy interesante Bruno 🙂
Gracias!
Excelente artículo. Muchas gracias.
Actualmente utilizo sails en algunos de mis proyectos. Me gustaría preguntarte donde puedo conseguir mas información sobre el control de acceso basado en roles de sails, a ser posible en español, pero si no, en inglés. Me gustaría añadir control de acceso a una de mis páginas pero quiero establecer permisos para unos usuarios a partir de una determinada ruta y a otros a partir de otra ruta. Es eso posible con sails? No encuentro mucha información al respecto.
Gracias y felicidades por el artículo.
Un saludo
Elvira.
Hola Elvira!
Con respecto a lo que mencionas, sea Sailsjs o cualquier otro framework, lo que planteas està relacionado con el modelado de los datos y las restricciones que el sistema imponga.
Podrías crear algo como «grupos» (roles) con diferentes permisos y a cada usuario asociarlo a uno de ellos.
Particularmente en sails se llaman «policies» y puedes verlo aquì: http://sailsjs.org/#/documentation/concepts/Policies
Saludos y gracias por tu comentario!
Muchas gracias Bruno. Con tus indicaciones, encontré una solución elegante. Un saludo