Sails.js

Introducción

logo

Antes que nada

Esta presentación esta basada en una presentación de Nicolas Jansma http://goo.gl/rnPKCU

Sails.js

Es un framework MVC creado por Mike McNeil en 2012.

Sails.js es

  • Framework MVC para desarrollo backend con Node.js/IO.js
  • Construido con Express.js
  • Inpirado en otros frameworks como RoR, Symfony, Django.
  • Ideal para trabajo realtime (juegos, dashboards, chats).

características básicas de Sails.js

  • 100% Javascript
  • Capa de abstraccion de datos compatible con multiples motores
  • APIs auto generadas
  • Soporta el uso de websockets y su integración con APIs
  • Politicas de seguridad reusables
  • Soporta el uso de muchas herramientas para frontend (motores de plantillas, herramientas js para frontend)
  • Manejo simple de recursos (assets)

Anatomia de Sails.js

  • api/controllers - controladores
  • api/models - modelos
  • api/policies - autenticación/autorización
  • api/responses - handlers de respuestas del sistema
  • api/services - servicios del sistema
  • assets/ - recursos estaticos
  • config/ - configuración del sistema
  • tasks/ - tareas automatizadas de grunt o CLI
  • views/ - vistas

Modelos en Sails.js

  • http://sailsjs.org/#!documentation/models
  • Waterline ORM (Active Record, Hibernate, Mongoose)
  • 
    // Bird.js
    module.exports = {
      attributes: {
        name: {
          type: 'string'
        },
        wingspan: {
          type: 'float',
          required: true
        },
        wingspanUnits: {
          type: 'string',
          enum: ['cm', 'in', 'm', 'mm'],
          defaultsTo: 'cm'
        }
      }
    }
    							

Controladores en Sails.js

  • http://links.sailsjs.org/docs/controllers
  • api/controllers
  • Genera acciones crud automaticamente
  • Se apoya en blueprints.js para generar shortcuts

Vistas en Sails.js

  • Usan por defecto Jade
  • Se pueden personalizar
  • 
    

    <%= user.name %>'s first view

    My corndog collection:

      <% _.each(corndogs, function (corndog) { %>
    • <%= corndog.name %>
    • <% }) %>

Rutas en Sails.js

  • Se manejan en el archivo config/routes.js
  • Se pueden modificar
  • 
    // config/routes.js
    module.exports.routes = {
      'get /signup': { view: 'conversion/signup' },
      'post /signup': 'AuthController.processSignup',
      'get /login': { view: 'portal/login' },
      'post /login': 'AuthController.processLogin',
      '/logout': 'AuthController.logout',
      'get /me': 'UserController.profile'
    }
    							

Websockets en Sails.js

  • Usa una libreria especifica de sails en el cliente
  • 
    
    socket = io.connect();
    typeof console !== 'undefined' &&
    console.log('Connecting Socket.io to Sails.js...');
    socket.on('connect', function socketConnected() {
      typeof console !== 'undefined' &&
      console.log(
        'Socket is now connected and globally accessible as `socket`.\n' +
        'e.g. to send a GET request to Sails via Socket.io, try: \n' +
        '`socket.get("/foo", function (response) { console.log(response); })`'
      );
    
      socket.on('message', function newMessageFromSails ( message ) {
        typeof console !== 'undefined' &&
        console.log('New message received from Sails ::\n', message);
      });
    });
    							

Demo de Sails.js

Preguntas

Oscar Andrés Granada

@oagranada