Sails.js – Introducción – Sails.js es



Sails.js – Introducción – Sails.js es

0 0


sails_speak

Sails.js speak

On Github ogranada / sails_speak

Sails.js

Introducción

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

Sails.js Introducción