Miguel Angel Gordian

Un MVC en Node

¿Qué es Sails?

Convention over Configuration

Loose Coupling

Sails es un web framework.

MVC -

Model–view–controller  

Patron de arquitectura de software

Estructura

Rutas

Mecanismo para mapear URLs a controladores y vistas.

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'
}

config/routes.js

Controlador

Un controlador es un objeto

module.exports = {
  hi: function (req, res) {
    return res.send("Hi there!");
  },
  bye: function (req, res) {
    return res.redirect("http://www.sayonara.com");
  }
};

api/controllers/greeting.js

La clave es el nombre de la acción

El valor el método correspondiente.

Modelo

Una collección de datos estructurados.

module.exports = {
  connection: 'ourMySQL',
  attributes: {
    email: 'string',
    wishlist: {
      collection: 'product',
      via: 'wishlistedBy'
    }
  }
};

api/models/user.js

Logica y reglas de la aplicación.

Blueprints

Reduce el codigo a escribir y el tiempo requerido para tener una aplicación lista para correr.

Blueprint Actions

Blueprint Routes

Blueprints

Reduce el codigo a escribir y el tiempo requerido para tener una aplicación lista para correr.

Blueprint Actions

Blueprint Routes

Blueprints

Actions

Para el modelo User.js, el controlador vacio UserController.js implicitamente tiene:

Requiere un modelo existente

  • find
  • create
  • update
  • destroy
  • populate
  • add
  • remove

Blueprints

routes

RESTful routes

Shortcut routes

Action routes


/user/update/1?name=mike
/user/create?name=joe

POST /user # create user
DELETE /user/123 # Delete User

ORM - waterline

Simplifica la interacción con una o mas bases de datos.

Middleware

Compatible con los middlewares de Express / Connect

Generadores agregar o sobreescribir funcionalidad en la CLI.

Adaptadores integrar nuevas fuentes a waterline

Hooks anteponer o inyectar nueva funcionalidad en el engine de sails.

Recomendaciones

Uso de SASS, neat y bourbon

Jade, como template engine 

Uso de componentes, van muy bien con APIs

Passport o waterlock para autenticación

Documenta tu API con swagger.io

Evita mezclar muchos adaptadores.

Contacto

@zoek1

@ilcapitanozoek

https://slides.com/miguelangelgordian/sails-js

Sails.js

By Miguel Angel Gordian