SlideShare una empresa de Scribd logo
1 de 72
S.P.A. con Backbone.js

Julien Castelain
Denis Ciccale
Nosotros
Desarrolladores front auto-didactas

• Trabajan en MediaNet Software como UX Technical
  Leaders
• Actualmente usando Backbone.js en un proyecto
  para uno de los 5 bancos más grandes de Europa


                                      J. Castelain, D. Ciccale
                                          MediaNet Software
¿De qué vamos a hablar?
•   Acerca de MediaNet Software
•   Backbone.js & MVC
•   Gestión de recursos
•   Tests Unitarios
•   Conclusiones
•   ¿Preguntas?

                                  J. Castelain, D. Ciccale   3
                                      MediaNet Software
Acerca de MediaNet Software
EMPRESA ESPAÑOLA
 EMPRESA ESPAÑOLA

FUNDADA EN 1995
 FUNDADA EN 1995

TRAYECTORIA DE SPIN-OFFS Y
 TRAYECTORIA DE SPIN-OFFS Y
START-UPS
 START-UPS


                              J. Castelain, D. Ciccale
                                  MediaNet Software
PERFIL DE EMPRESA:
PERFIL DE EMPRESA:


ARTESANÍA:
ARTESANÍA:
CONOCIMIENTO +
CONOCIMIENTO +
EXPERIENCIA
EXPERIENCIA          http://www.flickr.com/photos/24443965@N08/

                                        J. Castelain, D. Ciccale
                                            MediaNet Software
18/03/12                                       194 Medianos - Google Maps




PERFIL DE EMPRESA:
PERFIL DE EMPRESA:


MÁS DE 200 ESPECIALISTAS
MÁS DE 200 ESPECIALISTAS
                                                                                                                       ©2012 Google -

                                      194 Medianos
                                      Publicación restringida · 68 vistas
                                      Creado el 12 de Mar · Por · Actualizado hace 2 días
                                                                                            J. Castelain, D. Ciccale
                                                                                                MediaNet Software
                                      Argentina - Comodoro Rivadavia
UNA CULTURA BASADA EN
UNA CULTURA BASADA EN
LA INNOVACIÓN
LA INNOVACIÓN

UN ENFOQUE CENTRADO
UN ENFOQUE CENTRADO
EN EL PROYECTO
EN EL PROYECTO

                        J. Castelain, D. Ciccale
                            MediaNet Software
NUESTRA FÓRMULA:
NUESTRA FÓRMULA:


COMPROMISO
COMPROMISO
VISIÓN A LARGO PLAZO
VISIÓN A LARGO PLAZO
EQUIPO
EQUIPO
                       J. Castelain, D. Ciccale
                           MediaNet Software
tivo s
                                                    s
                                                  vo
                                          bjje ti
                                             e
                                       e ob
                                         o
                                   n de
                                      d
                              iciió n
                                  ó
                          arttic
                         p r
                      mp a
                    Co m
¿QUÉ HACEMOS?
¿QUÉ HACEMOS?

                    Co
NUESTRAS ÁREAS DE
NUESTRAS ÁREAS DE
ACTIVIDAD
ACTIVIDAD

                                                        J. Castelain, D. Ciccale
                                                            MediaNet Software
Y SOBRE TODO:
Y SOBRE TODO:


LAS PERSONAS SON
LAS PERSONAS SON
SIEMPRE LO PRIMERO
SIEMPRE LO PRIMERO

                     J. Castelain, D. Ciccale
                         MediaNet Software
¿Qué es Backbone.js?
Es una librería que permite estructurar una
aplicación web siguiendo el concepto de MVC




                                J. Castelain, D. Ciccale
                                    MediaNet Software
Otros frameworks MVC




                  J. Castelain, D. Ciccale
                      MediaNet Software
Componentes de Backbone.js




                             J. Castelain, D. Ciccale   15
                                 MediaNet Software
Models
• Representa los datos




                         J. Castelain, D. Ciccale   16
                             MediaNet Software
Models
var User = Backbone.Model.extend({
  defaults: {
       firstName: '',
       lastName: '',
       date: null
  },
  url: '/user'
});


                                     J. Castelain, D. Ciccale   17
                                         MediaNet Software
Models
• Representa los datos
• Notifica de cambios en sus atributos




                                         J. Castelain, D. Ciccale   18
                                             MediaNet Software
Models
• Representa los datos
• Notifica de cambios en sus atributos
• Se comunica con el servidor para estar sincronizado
    •   fetch (GET), save (POST/PUT), destroy (DELETE)




                                          J. Castelain, D. Ciccale   19
                                              MediaNet Software
Models
var user = new User();
user.on('change', function () {
  console.log(user.toJSON());
});
user.fetch(); // GET json
// actualización
user.set({firstName: 'Jeremy', lastName: 'Ashkenas'});
user.save(); // POST/PUT

                                         J. Castelain, D. Ciccale   20
                                             MediaNet Software
Collections
• Conjunto de modelos




                        J. Castelain, D. Ciccale   21
                            MediaNet Software
Collections
var Users = Backbone.Collection.extend({
  model: User, // modelo que usa la colección
  url: '/users' // url que devuelve los datos
});




                                      J. Castelain, D. Ciccale   22
                                          MediaNet Software
Collections
• Conjunto de modelos
• Se comporta como un modelo




                               J. Castelain, D. Ciccale   23
                                   MediaNet Software
Collections
var users = new Users();
users.fetch(); // petición GET a /users
…
console.log(users.models);




                                J. Castelain, D. Ciccale   24
                                    MediaNet Software
Collections
• Conjunto de modelos
• Se comporta como un modelo
• Eventos
   •   add, remove, refresh, reset




                                     J. Castelain, D. Ciccale   25
                                         MediaNet Software
Collections
var users = new Users();
users.on('reset', function () {
  console.log('modelos reemplazados!');
});
users.fetch(); // GET /users



                                J. Castelain, D. Ciccale   26
                                    MediaNet Software
Collections
• Conjunto de modelos
• Se comporta como un modelo
• Eventos
    •   add, remove, refresh, reset
• Fácil manipulación gracias a Underscore.js
    •   forEach (each), map, reduce (foldl, inject), reduceRight (foldr), find (detect), filter (select), reject,
        every (all), some (any), include, invoke, max, min, sortBy, groupBy, sortedIndex, shuffle, toArray,
        size, first, initial, rest, last, without, indexOf, lastIndexOf, isEmpty, chain



                                                                               J. Castelain, D. Ciccale        27
                                                                                   MediaNet Software
Views
• Representación gráfica de los datos
    •   template, initialize, model, render, el




                                                  J. Castelain, D. Ciccale   28
                                                      MediaNet Software
Views
var UserView = Backbone.View.extend({
  template: _.template($('#userView').html()),
  initialize: function () {
       this.render();
  },
  render: function () {
       this.$el.html(this.template(this.model.toJSON()));
       return this;
  }
});
                                                     J. Castelain, D. Ciccale   29
                                                         MediaNet Software
Views
<!-- UserView template -->
<script type="text/template" id="userView">
  <h2>Usuario</h2>
  <p>Nombre: <%= firstName %></p>
  <p>Apellido: <%= lastName %></p>
</script>




                                              J. Castelain, D. Ciccale   30
                                                  MediaNet Software
Views
// instanciamos la vista
var userView = new UserView({model: user});
userView.el.appendTo(document.body);
....
<div>
  <h2>Usuario</h2>
  <p>Nombre: Jeremy</p>
  <p>Apellido: Ashkenas</p>
</div>
                                              J. Castelain, D. Ciccale   31
                                                  MediaNet Software
Views
• Representación gráfica de los datos
    •   template, initialize, model, render, el
• Puede mantenerse sincronizada con el modelo o una
  colección




                                                  J. Castelain, D. Ciccale   32
                                                      MediaNet Software
Views
var UserView = Backbone.View.extend({
  …
  initialize: function () {
      this.model.on('change', this.render, this);
  }
  …
});

                                     J. Castelain, D. Ciccale   33
                                         MediaNet Software
Views
• Representación gráfica de los datos
    •   template, Initialize, model, render, el
• Puede mantenerse sincronizada con el modelo o una
  colección
• Eventos (click, submit...)



                                                  J. Castelain, D. Ciccale   34
                                                      MediaNet Software
Views
var UserView = Backbone.View.extend({
 initialize: function () {
       _.bindAll(this);
 },
 events: {
      'click #button': 'sayHello';
 },
 sayHello: function (event) {
      console.log('hello', this.model.get('firstName'));
 }
});
                                                           J. Castelain, D. Ciccale   35
                                                               MediaNet Software
Templating
• Underscore, Handlebars




                           J. Castelain, D. Ciccale   36
                               MediaNet Software
Templating
<script type="text/template" id="usersView">
   <h2>Usuarios</h2>
   <ul>
   <% _.each(users, function (user) { %>
    <li>Usuario: <%= firstName %>, <%= lastName %></li>
  <% }); %>
   </ul>
</script>

                                           J. Castelain, D. Ciccale   37
                                               MediaNet Software
Templating
<script>
  _.templateSettings = {
   interpolate : /{{(.+?)}}/g
  };
</script>




                                    J. Castelain, D. Ciccale   38
                                        MediaNet Software
Templating
<script type="text/template" id="usersView">
  <h2>Usuarios</h2>
  <ul>
  <% _.each(users, function (user) { %>
    <li>Usuario: {{ firstName }}, {{ lastName }}</li>
  <% }); %>
  </ul>
</script>

                                          J. Castelain, D. Ciccale   39
                                              MediaNet Software
Templating
var UserView = Backbone.View.extend({
  template: Handlebars.compile($('#userView').html()),
  ...
  render: function () {
      this.$el.html(this.template(this.model.toJSON()));
      return this;
  }
});


                                               J. Castelain, D. Ciccale   40
                                                   MediaNet Software
Templating
<script type="text/template" id="usersView">
  <h2>Usuarios</h2>
  <ul>
  {{#each users}}
    <li>Usuario: {{ firstName }}, {{ lastName }}</li>
  {{/each}}
  </ul>
</script>


                                               J. Castelain, D. Ciccale   41
                                                   MediaNet Software
¿M.V…?
Router
• Controla la navegación




                           J. Castelain, D. Ciccale   43
                               MediaNet Software
Router
var Router = Backbone.Router.extend({
  routes: {
      '/': 'homePage',
      '/users/:id': 'userPage'
  }
});




                                        J. Castelain, D. Ciccale   44
                                            MediaNet Software
Router
var Router = Backbone.Router.extend({
      ...
  userPage: function (id) {
      console.log('Buscando el usuario:', id);
  }
});




                                                 J. Castelain, D. Ciccale   45
                                                     MediaNet Software
Router
• Controla la navegación
• Utiliza el History API de HTML5 (o un fallback)

var router = new Router();
Backbone.History.start({ pushState: true });




                                               J. Castelain, D. Ciccale   46
                                                   MediaNet Software
Events
• Comunicación entre objetos (Modelos,
  Colecciones…)




                                     J. Castelain, D. Ciccale   47
                                         MediaNet Software
Events
var obj = _.extend(Backbone.Events, {});


obj.on('search:user', function (id) {
  console.log('Buscando al usuario:', id);
  // Buscando al usuario: 567
});
...
obj.trigger('search:user', 567);



                                             J. Castelain, D. Ciccale   48
                                                 MediaNet Software
Events
• Comunicación entre objetos (Modelos,
  Colecciones…)
• Integrado en el núcleo de Backbone
    •   Modelos y colecciones publican
    •   Vistas se subscriben




                                         J. Castelain, D. Ciccale   49
                                             MediaNet Software
Events
var UserView = Backbone.View.extend({
  initialize: function () {
      this.model.on('change', this.render, this);
      // para escuchar el cambio de una propiedad específica
      // this.model.on('change:firstName', this.render, this);
  }
});




                                               J. Castelain, D. Ciccale   50
                                                   MediaNet Software
Data binding
• Backbone no tiene data binding




                                   J. Castelain, D. Ciccale   51
                                       MediaNet Software
Data binding
• Backbone no tiene data binding
• Comunicación entre modelos y vistas a través de
  eventos
    •   var pubsub = _.extend(Backbone.Events, {});
    •   jquery.xxspubsub.js (https://gist.github.com/1653547)
    •   Pubsub en CoffeScript
        (https://gist.github.com/2175018)



                                            J. Castelain, D. Ciccale   52
                                                MediaNet Software
Gestión de recursos
Gestión de recursos
• ¿Muchos recursos?




                      J. Castelain, D. Ciccale   54
                          MediaNet Software
Gestión de recursos
• ¿Muchos recursos?
<!doctype html>
<head>
  <script src="libs/jquery.min.js"></script>
  <script src="libs/underscore.min.js"></script>
  <script src="libs/backbone.min.js"></script>
  <script src="modules/chat.js"></script>
  <script src="modules/dashboard.js"></script>
  <script src="app/main.js"></script>
</head>
...

                                                   J. Castelain, D. Ciccale   55
                                                       MediaNet Software
Gestión de recursos
• ¿Muchos recursos?
• RequireJS (module loader)




                              J. Castelain, D. Ciccale   56
                                  MediaNet Software
Gestión de recursos
• ¿Muchos recursos?
• RequireJS (module loader)
• ¿Por qué RequireJS?
    •   yepnope, lab.js (script loaders)




                                           J. Castelain, D. Ciccale   57
                                               MediaNet Software
RequireJS
require(['libs/jquery.min'], function () {
  console.log(jQuery);
});




                                      J. Castelain, D. Ciccale   58
                                          MediaNet Software
RequireJS
define('mymodule', ['libs/jquery.min', 'libs/underscore.min',
    'libs/backbone.min'], function () {
 var View = Backbone.View.extend({});


 return {
      id: 'mymodule',
      route: '/mymodule',
      View: View
 };
});


                                                         J. Castelain, D. Ciccale   59
                                                             MediaNet Software
RequireJS
require(['mymodule'], function (mymodule) {
  var view = new mymodule.View();
  $('#container').append(view.render().el);
});




                                              J. Castelain, D. Ciccale   60
                                                  MediaNet Software
RequireJS Plugins
• Para cargar:
    •   text (html, css)
    •   cs (coffeescript)
    •   async (de manera asíncrono)
    •   order (en orden)




                                      J. Castelain, D. Ciccale   61
                                          MediaNet Software
Tests Unitarios
Tests Unitarios
•   Opciones




                  J. Castelain, D. Ciccale   63
                      MediaNet Software
QUnit
• Sencillo
• Buena documentación
• Tests de Backbone.js en QUnit




                                  J. Castelain, D. Ciccale   64
                                      MediaNet Software
QUnit
module('app', {
  setup: function () {
       /* se ejecuta antes de cada tests */
  },
  teardown: function () {
       /* se ejecuta luego de finalizar un test */
  }
});


                                                J. Castelain, D. Ciccale   65
                                                    MediaNet Software
QUnit
test('Probamos el modelo User', function () {
  var user = new User();
  deepEqual(user.get('firstName'), '', 'Usuario sin nombre');
});




                                                J. Castelain, D. Ciccale   66
                                                    MediaNet Software
Conclusiones
Recursos
Recursos
•   Backbonejs.org
•   Backbone Fundamentals
•   PeepCode
•   Los Techies
•   Backbone source code



                            J. Castelain, D. Ciccale   69
                                MediaNet Software
¿Preguntas?
J. Castelain, D. Ciccale
    MediaNet Software
Gracias
Denis
   - @tdecs
   - github.com/dciccale
Julien
   - @__juju__
   - github.com/julien

Más contenido relacionado

Similar a S.P.A con Backbone.js

Visualización de datos con Tableau Public - Comité de Investigación
Visualización de datos con Tableau Public - Comité de InvestigaciónVisualización de datos con Tableau Public - Comité de Investigación
Visualización de datos con Tableau Public - Comité de InvestigaciónIAB México
 
Metodología y Herramientas para diseñar sistemas 
de alta performance - XII J...
Metodología y Herramientas para diseñar sistemas 
de alta performance - XII J...Metodología y Herramientas para diseñar sistemas 
de alta performance - XII J...
Metodología y Herramientas para diseñar sistemas 
de alta performance - XII J...Santiago Bustelo
 
200611 Developing Java web applications
200611 Developing Java web applications 200611 Developing Java web applications
200611 Developing Java web applications Javier Gonzalez-Sanchez
 
SISTEMA DE BASE DE DATOS EN MYSQL PARA LLEVAR EL CONTROL Y REGISTRO DE LA INF...
SISTEMA DE BASE DE DATOS EN MYSQL PARA LLEVAR EL CONTROL Y REGISTRO DE LA INF...SISTEMA DE BASE DE DATOS EN MYSQL PARA LLEVAR EL CONTROL Y REGISTRO DE LA INF...
SISTEMA DE BASE DE DATOS EN MYSQL PARA LLEVAR EL CONTROL Y REGISTRO DE LA INF...AngelicaMendoza564464
 
Ciclo de vida de un sistema de kendal y kendal
Ciclo de vida de un sistema de kendal y kendalCiclo de vida de un sistema de kendal y kendal
Ciclo de vida de un sistema de kendal y kendalsaukry
 
Ciclo de vida de un sistema de kendal y kendal
Ciclo de vida de un sistema de kendal y kendalCiclo de vida de un sistema de kendal y kendal
Ciclo de vida de un sistema de kendal y kendalsaukry
 
Taller Práctico de Android
Taller Práctico de AndroidTaller Práctico de Android
Taller Práctico de AndroidJavier Muñoz
 
la mejor forma de Conectar c# con mysql con archivos de configuracion
 la mejor forma de Conectar c# con mysql con archivos de configuracion  la mejor forma de Conectar c# con mysql con archivos de configuracion
la mejor forma de Conectar c# con mysql con archivos de configuracion juandavid1118
 
Lecciones aprendidas creando una red social
Lecciones aprendidas creando una red socialLecciones aprendidas creando una red social
Lecciones aprendidas creando una red socialRoberto Luis Bisbé
 
¿Quién va a desarrollar las Apps del futuro? (aviso: no serán los programadores)
¿Quién va a desarrollar las Apps del futuro? (aviso: no serán los programadores)¿Quién va a desarrollar las Apps del futuro? (aviso: no serán los programadores)
¿Quién va a desarrollar las Apps del futuro? (aviso: no serán los programadores)Jordi Cabot
 
Trabajo de induccion
Trabajo de induccionTrabajo de induccion
Trabajo de induccionTDS SENA
 

Similar a S.P.A con Backbone.js (20)

Sesion05 analisis-definir
Sesion05 analisis-definirSesion05 analisis-definir
Sesion05 analisis-definir
 
Visualización de datos con Tableau Public - Comité de Investigación
Visualización de datos con Tableau Public - Comité de InvestigaciónVisualización de datos con Tableau Public - Comité de Investigación
Visualización de datos con Tableau Public - Comité de Investigación
 
Ciclo de vida de sistema
Ciclo de vida de sistemaCiclo de vida de sistema
Ciclo de vida de sistema
 
Metodología y Herramientas para diseñar sistemas 
de alta performance - XII J...
Metodología y Herramientas para diseñar sistemas 
de alta performance - XII J...Metodología y Herramientas para diseñar sistemas 
de alta performance - XII J...
Metodología y Herramientas para diseñar sistemas 
de alta performance - XII J...
 
Administrador de base de datos
Administrador de base de datosAdministrador de base de datos
Administrador de base de datos
 
Jclic
JclicJclic
Jclic
 
Jclic
JclicJclic
Jclic
 
ciclo de vida.pdf
ciclo de vida.pdfciclo de vida.pdf
ciclo de vida.pdf
 
200611 Developing Java web applications
200611 Developing Java web applications 200611 Developing Java web applications
200611 Developing Java web applications
 
SISTEMA DE BASE DE DATOS EN MYSQL PARA LLEVAR EL CONTROL Y REGISTRO DE LA INF...
SISTEMA DE BASE DE DATOS EN MYSQL PARA LLEVAR EL CONTROL Y REGISTRO DE LA INF...SISTEMA DE BASE DE DATOS EN MYSQL PARA LLEVAR EL CONTROL Y REGISTRO DE LA INF...
SISTEMA DE BASE DE DATOS EN MYSQL PARA LLEVAR EL CONTROL Y REGISTRO DE LA INF...
 
JCLIC
JCLICJCLIC
JCLIC
 
Dinamicasistemas
DinamicasistemasDinamicasistemas
Dinamicasistemas
 
Ciclo de vida de un sistema de kendal y kendal
Ciclo de vida de un sistema de kendal y kendalCiclo de vida de un sistema de kendal y kendal
Ciclo de vida de un sistema de kendal y kendal
 
Ciclo de vida de un sistema de kendal y kendal
Ciclo de vida de un sistema de kendal y kendalCiclo de vida de un sistema de kendal y kendal
Ciclo de vida de un sistema de kendal y kendal
 
Bdguia1
Bdguia1Bdguia1
Bdguia1
 
Taller Práctico de Android
Taller Práctico de AndroidTaller Práctico de Android
Taller Práctico de Android
 
la mejor forma de Conectar c# con mysql con archivos de configuracion
 la mejor forma de Conectar c# con mysql con archivos de configuracion  la mejor forma de Conectar c# con mysql con archivos de configuracion
la mejor forma de Conectar c# con mysql con archivos de configuracion
 
Lecciones aprendidas creando una red social
Lecciones aprendidas creando una red socialLecciones aprendidas creando una red social
Lecciones aprendidas creando una red social
 
¿Quién va a desarrollar las Apps del futuro? (aviso: no serán los programadores)
¿Quién va a desarrollar las Apps del futuro? (aviso: no serán los programadores)¿Quién va a desarrollar las Apps del futuro? (aviso: no serán los programadores)
¿Quién va a desarrollar las Apps del futuro? (aviso: no serán los programadores)
 
Trabajo de induccion
Trabajo de induccionTrabajo de induccion
Trabajo de induccion
 

Último

trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...AlanCedillo9
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...FacuMeza2
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxJOSEMANUELHERNANDEZH11
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersIván López Martín
 

Último (19)

trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptx
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
 

S.P.A con Backbone.js

  • 1. S.P.A. con Backbone.js Julien Castelain Denis Ciccale
  • 2. Nosotros Desarrolladores front auto-didactas • Trabajan en MediaNet Software como UX Technical Leaders • Actualmente usando Backbone.js en un proyecto para uno de los 5 bancos más grandes de Europa J. Castelain, D. Ciccale MediaNet Software
  • 3. ¿De qué vamos a hablar? • Acerca de MediaNet Software • Backbone.js & MVC • Gestión de recursos • Tests Unitarios • Conclusiones • ¿Preguntas? J. Castelain, D. Ciccale 3 MediaNet Software
  • 5. EMPRESA ESPAÑOLA EMPRESA ESPAÑOLA FUNDADA EN 1995 FUNDADA EN 1995 TRAYECTORIA DE SPIN-OFFS Y TRAYECTORIA DE SPIN-OFFS Y START-UPS START-UPS J. Castelain, D. Ciccale MediaNet Software
  • 6. PERFIL DE EMPRESA: PERFIL DE EMPRESA: ARTESANÍA: ARTESANÍA: CONOCIMIENTO + CONOCIMIENTO + EXPERIENCIA EXPERIENCIA http://www.flickr.com/photos/24443965@N08/ J. Castelain, D. Ciccale MediaNet Software
  • 7. 18/03/12 194 Medianos - Google Maps PERFIL DE EMPRESA: PERFIL DE EMPRESA: MÁS DE 200 ESPECIALISTAS MÁS DE 200 ESPECIALISTAS ©2012 Google - 194 Medianos Publicación restringida · 68 vistas Creado el 12 de Mar · Por · Actualizado hace 2 días J. Castelain, D. Ciccale MediaNet Software Argentina - Comodoro Rivadavia
  • 8. UNA CULTURA BASADA EN UNA CULTURA BASADA EN LA INNOVACIÓN LA INNOVACIÓN UN ENFOQUE CENTRADO UN ENFOQUE CENTRADO EN EL PROYECTO EN EL PROYECTO J. Castelain, D. Ciccale MediaNet Software
  • 9. NUESTRA FÓRMULA: NUESTRA FÓRMULA: COMPROMISO COMPROMISO VISIÓN A LARGO PLAZO VISIÓN A LARGO PLAZO EQUIPO EQUIPO J. Castelain, D. Ciccale MediaNet Software
  • 10. tivo s s vo bjje ti e e ob o n de d iciió n ó arttic p r mp a Co m ¿QUÉ HACEMOS? ¿QUÉ HACEMOS? Co NUESTRAS ÁREAS DE NUESTRAS ÁREAS DE ACTIVIDAD ACTIVIDAD J. Castelain, D. Ciccale MediaNet Software
  • 11. Y SOBRE TODO: Y SOBRE TODO: LAS PERSONAS SON LAS PERSONAS SON SIEMPRE LO PRIMERO SIEMPRE LO PRIMERO J. Castelain, D. Ciccale MediaNet Software
  • 13. Es una librería que permite estructurar una aplicación web siguiendo el concepto de MVC J. Castelain, D. Ciccale MediaNet Software
  • 14. Otros frameworks MVC J. Castelain, D. Ciccale MediaNet Software
  • 15. Componentes de Backbone.js J. Castelain, D. Ciccale 15 MediaNet Software
  • 16. Models • Representa los datos J. Castelain, D. Ciccale 16 MediaNet Software
  • 17. Models var User = Backbone.Model.extend({ defaults: { firstName: '', lastName: '', date: null }, url: '/user' }); J. Castelain, D. Ciccale 17 MediaNet Software
  • 18. Models • Representa los datos • Notifica de cambios en sus atributos J. Castelain, D. Ciccale 18 MediaNet Software
  • 19. Models • Representa los datos • Notifica de cambios en sus atributos • Se comunica con el servidor para estar sincronizado • fetch (GET), save (POST/PUT), destroy (DELETE) J. Castelain, D. Ciccale 19 MediaNet Software
  • 20. Models var user = new User(); user.on('change', function () { console.log(user.toJSON()); }); user.fetch(); // GET json // actualización user.set({firstName: 'Jeremy', lastName: 'Ashkenas'}); user.save(); // POST/PUT J. Castelain, D. Ciccale 20 MediaNet Software
  • 21. Collections • Conjunto de modelos J. Castelain, D. Ciccale 21 MediaNet Software
  • 22. Collections var Users = Backbone.Collection.extend({ model: User, // modelo que usa la colección url: '/users' // url que devuelve los datos }); J. Castelain, D. Ciccale 22 MediaNet Software
  • 23. Collections • Conjunto de modelos • Se comporta como un modelo J. Castelain, D. Ciccale 23 MediaNet Software
  • 24. Collections var users = new Users(); users.fetch(); // petición GET a /users … console.log(users.models); J. Castelain, D. Ciccale 24 MediaNet Software
  • 25. Collections • Conjunto de modelos • Se comporta como un modelo • Eventos • add, remove, refresh, reset J. Castelain, D. Ciccale 25 MediaNet Software
  • 26. Collections var users = new Users(); users.on('reset', function () { console.log('modelos reemplazados!'); }); users.fetch(); // GET /users J. Castelain, D. Ciccale 26 MediaNet Software
  • 27. Collections • Conjunto de modelos • Se comporta como un modelo • Eventos • add, remove, refresh, reset • Fácil manipulación gracias a Underscore.js • forEach (each), map, reduce (foldl, inject), reduceRight (foldr), find (detect), filter (select), reject, every (all), some (any), include, invoke, max, min, sortBy, groupBy, sortedIndex, shuffle, toArray, size, first, initial, rest, last, without, indexOf, lastIndexOf, isEmpty, chain J. Castelain, D. Ciccale 27 MediaNet Software
  • 28. Views • Representación gráfica de los datos • template, initialize, model, render, el J. Castelain, D. Ciccale 28 MediaNet Software
  • 29. Views var UserView = Backbone.View.extend({ template: _.template($('#userView').html()), initialize: function () { this.render(); }, render: function () { this.$el.html(this.template(this.model.toJSON())); return this; } }); J. Castelain, D. Ciccale 29 MediaNet Software
  • 30. Views <!-- UserView template --> <script type="text/template" id="userView"> <h2>Usuario</h2> <p>Nombre: <%= firstName %></p> <p>Apellido: <%= lastName %></p> </script> J. Castelain, D. Ciccale 30 MediaNet Software
  • 31. Views // instanciamos la vista var userView = new UserView({model: user}); userView.el.appendTo(document.body); .... <div> <h2>Usuario</h2> <p>Nombre: Jeremy</p> <p>Apellido: Ashkenas</p> </div> J. Castelain, D. Ciccale 31 MediaNet Software
  • 32. Views • Representación gráfica de los datos • template, initialize, model, render, el • Puede mantenerse sincronizada con el modelo o una colección J. Castelain, D. Ciccale 32 MediaNet Software
  • 33. Views var UserView = Backbone.View.extend({ … initialize: function () { this.model.on('change', this.render, this); } … }); J. Castelain, D. Ciccale 33 MediaNet Software
  • 34. Views • Representación gráfica de los datos • template, Initialize, model, render, el • Puede mantenerse sincronizada con el modelo o una colección • Eventos (click, submit...) J. Castelain, D. Ciccale 34 MediaNet Software
  • 35. Views var UserView = Backbone.View.extend({ initialize: function () { _.bindAll(this); }, events: { 'click #button': 'sayHello'; }, sayHello: function (event) { console.log('hello', this.model.get('firstName')); } }); J. Castelain, D. Ciccale 35 MediaNet Software
  • 36. Templating • Underscore, Handlebars J. Castelain, D. Ciccale 36 MediaNet Software
  • 37. Templating <script type="text/template" id="usersView"> <h2>Usuarios</h2> <ul> <% _.each(users, function (user) { %> <li>Usuario: <%= firstName %>, <%= lastName %></li> <% }); %> </ul> </script> J. Castelain, D. Ciccale 37 MediaNet Software
  • 38. Templating <script> _.templateSettings = { interpolate : /{{(.+?)}}/g }; </script> J. Castelain, D. Ciccale 38 MediaNet Software
  • 39. Templating <script type="text/template" id="usersView"> <h2>Usuarios</h2> <ul> <% _.each(users, function (user) { %> <li>Usuario: {{ firstName }}, {{ lastName }}</li> <% }); %> </ul> </script> J. Castelain, D. Ciccale 39 MediaNet Software
  • 40. Templating var UserView = Backbone.View.extend({ template: Handlebars.compile($('#userView').html()), ... render: function () { this.$el.html(this.template(this.model.toJSON())); return this; } }); J. Castelain, D. Ciccale 40 MediaNet Software
  • 41. Templating <script type="text/template" id="usersView"> <h2>Usuarios</h2> <ul> {{#each users}} <li>Usuario: {{ firstName }}, {{ lastName }}</li> {{/each}} </ul> </script> J. Castelain, D. Ciccale 41 MediaNet Software
  • 43. Router • Controla la navegación J. Castelain, D. Ciccale 43 MediaNet Software
  • 44. Router var Router = Backbone.Router.extend({ routes: { '/': 'homePage', '/users/:id': 'userPage' } }); J. Castelain, D. Ciccale 44 MediaNet Software
  • 45. Router var Router = Backbone.Router.extend({ ... userPage: function (id) { console.log('Buscando el usuario:', id); } }); J. Castelain, D. Ciccale 45 MediaNet Software
  • 46. Router • Controla la navegación • Utiliza el History API de HTML5 (o un fallback) var router = new Router(); Backbone.History.start({ pushState: true }); J. Castelain, D. Ciccale 46 MediaNet Software
  • 47. Events • Comunicación entre objetos (Modelos, Colecciones…) J. Castelain, D. Ciccale 47 MediaNet Software
  • 48. Events var obj = _.extend(Backbone.Events, {}); obj.on('search:user', function (id) { console.log('Buscando al usuario:', id); // Buscando al usuario: 567 }); ... obj.trigger('search:user', 567); J. Castelain, D. Ciccale 48 MediaNet Software
  • 49. Events • Comunicación entre objetos (Modelos, Colecciones…) • Integrado en el núcleo de Backbone • Modelos y colecciones publican • Vistas se subscriben J. Castelain, D. Ciccale 49 MediaNet Software
  • 50. Events var UserView = Backbone.View.extend({ initialize: function () { this.model.on('change', this.render, this); // para escuchar el cambio de una propiedad específica // this.model.on('change:firstName', this.render, this); } }); J. Castelain, D. Ciccale 50 MediaNet Software
  • 51. Data binding • Backbone no tiene data binding J. Castelain, D. Ciccale 51 MediaNet Software
  • 52. Data binding • Backbone no tiene data binding • Comunicación entre modelos y vistas a través de eventos • var pubsub = _.extend(Backbone.Events, {}); • jquery.xxspubsub.js (https://gist.github.com/1653547) • Pubsub en CoffeScript (https://gist.github.com/2175018) J. Castelain, D. Ciccale 52 MediaNet Software
  • 54. Gestión de recursos • ¿Muchos recursos? J. Castelain, D. Ciccale 54 MediaNet Software
  • 55. Gestión de recursos • ¿Muchos recursos? <!doctype html> <head> <script src="libs/jquery.min.js"></script> <script src="libs/underscore.min.js"></script> <script src="libs/backbone.min.js"></script> <script src="modules/chat.js"></script> <script src="modules/dashboard.js"></script> <script src="app/main.js"></script> </head> ... J. Castelain, D. Ciccale 55 MediaNet Software
  • 56. Gestión de recursos • ¿Muchos recursos? • RequireJS (module loader) J. Castelain, D. Ciccale 56 MediaNet Software
  • 57. Gestión de recursos • ¿Muchos recursos? • RequireJS (module loader) • ¿Por qué RequireJS? • yepnope, lab.js (script loaders) J. Castelain, D. Ciccale 57 MediaNet Software
  • 58. RequireJS require(['libs/jquery.min'], function () { console.log(jQuery); }); J. Castelain, D. Ciccale 58 MediaNet Software
  • 59. RequireJS define('mymodule', ['libs/jquery.min', 'libs/underscore.min', 'libs/backbone.min'], function () { var View = Backbone.View.extend({}); return { id: 'mymodule', route: '/mymodule', View: View }; }); J. Castelain, D. Ciccale 59 MediaNet Software
  • 60. RequireJS require(['mymodule'], function (mymodule) { var view = new mymodule.View(); $('#container').append(view.render().el); }); J. Castelain, D. Ciccale 60 MediaNet Software
  • 61. RequireJS Plugins • Para cargar: • text (html, css) • cs (coffeescript) • async (de manera asíncrono) • order (en orden) J. Castelain, D. Ciccale 61 MediaNet Software
  • 63. Tests Unitarios • Opciones J. Castelain, D. Ciccale 63 MediaNet Software
  • 64. QUnit • Sencillo • Buena documentación • Tests de Backbone.js en QUnit J. Castelain, D. Ciccale 64 MediaNet Software
  • 65. QUnit module('app', { setup: function () { /* se ejecuta antes de cada tests */ }, teardown: function () { /* se ejecuta luego de finalizar un test */ } }); J. Castelain, D. Ciccale 65 MediaNet Software
  • 66. QUnit test('Probamos el modelo User', function () { var user = new User(); deepEqual(user.get('firstName'), '', 'Usuario sin nombre'); }); J. Castelain, D. Ciccale 66 MediaNet Software
  • 69. Recursos • Backbonejs.org • Backbone Fundamentals • PeepCode • Los Techies • Backbone source code J. Castelain, D. Ciccale 69 MediaNet Software
  • 71. J. Castelain, D. Ciccale MediaNet Software
  • 72. Gracias Denis - @tdecs - github.com/dciccale Julien - @__juju__ - github.com/julien

Notas del editor

  1. 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE
  2. 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE
  3. 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE
  4. 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE
  5. 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE MediaNet Software es una empresa española consultora en TIC fundada en 1995, con sede principal en Madrid y delegación técnica en Oviedo. Cuenta con un equipo especializado en diferentes tecnologías de la información, que ha crecido de forma ordenada hasta más de 200 profesionales, dejando en el camino numerosas spin-offs y startups especializadas en modelos de negocio en internet como BuyVIP y MercaDeuda. La historia de Media Net Software y de las empresas surgidas desde su base, está llena de pequeños logros que han posibilitado nuevas apuestas y proyectos más ambiciosos en cada uno de sus pasos. El interés por conservar la identidad y cultura de la profesionalidad, el compromiso y la calidad ha hecho que el crecimiento haya sido lento, ordenado y también constante incluso en momentos recesivos de la economía 06/03/12 AUTORE
  6. 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE MediaNet Software es una empresa que valora principalmente el interés técnico y fomenta la formación de sus profesionales. No somos una empresa que resuelve los problemas gracias a formar grandes equipos de trabajo; al contrario, formamos pequeños equipos de personas de excelente nivel humano y técnico. 06/03/12 AUTORE
  7. 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE La plantilla de MediaNet está formada por más de 200 especialistas que comparten su vocación tecnológica, sus ganas de aprender y su compromiso con el trabajo bien hecho. 06/03/12 AUTORE
  8. 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE Nuestros clientes delegan en MediaNet Software la creación de sistemas críticos para su negocio porque compartimos sus objetivos. A lo largo de nuestros más de 16 años de actividad, hemos entendido los condicionantes y el contexto de cada proyecto, hemos gestionado riesgos con transparencia, hemos aplicado metodologías ágiles, hemos asignado a personas con capacidad y actitud para sacar los retos adelante. Creemos que después de más de 300 proyectos realizados, los factores comunes que han caracterizado a cada uno de ellos son, en definitiva, la profesionalidad de las personas asignadas a un proyecto y la responsabilidad y compromiso de todas ellas con el éxito del mismo. 06/03/12 AUTORE
  9. 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE La fórmula de nuestro éxito pasa por el compromiso con nuestros clientes y nuestra plantilla, la visión estratégica a largo plazo y la importancia que tiene nuestro equipo de profesionales 06/03/12 AUTORE
  10. 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE Consultoría Tecnológica. Es nuestra principal área de actividad. El equipo de MNS está actualmente formado por más de 200 profesionales de formación técnica. Realizamos estudios de viabilidad tecnológica y análisis de herramientas; definimos entornos de desarrollo corporativos, e implantamos metodologías de trabajo ágiles. Todo según estándares de mercado, patrones y arquitecturas de referencia y buenas prácticas de referencia. Desarrollo a medida. Construimos aplicaciones que se adaptan a los requisitos específicos de nuestros clientes; integrándonos cuando es necesario con su infraestructura y parque de aplicaciones. Nuestras tecnologías de referencia son J2EE y .NET Movilidad. Desarrollamos aplicaciones de movilidad corporativas multi-plataforma; tanto en tecnología nativa (iOS, Android) como en HTML5 Experiencia de Usuario. Nuestro equipo de especialistas en User eXperience conceptualizan y definen la interacción del usuario con las aplicaciones que posteriormente desarrollamos. Las técnicas de prototipado y wireframming aseguran la agilidad en el uso de la aplicación y el soporte crossbrowsing Además, nuestro compromiso con el uso de estándares de mercado como WAI-AA, HTML 5 y JQERY y normativa internacional garantiza la accesibilidad de las aplicaciones Gestión de Proyectos. Colaboramos con grandes organizaciones en la gestión integral de proyectos, innovación y factorías de Software. Nuestro modelo de gestión parte de nuestro profundo conocimiento del mundo de la tecnología, Actualmente, los profesionales de MediaNet gestionan más de 400.000 horas de ingeniería al año. Gestión de infraestructuras. Definimos arquitecturas de sistemas, que implantamos, explotamos y gestionamos para nuestros clientes. Tanto en servidores físicos como en la nube. Desde 2008 somos proveedores de servicios Cloud, y actualmente somos socios tecnológicos de AWS y Azure Nuestro valor diferenciador es la capacidad de operar la infraestructura, y la información adicional de control de gestión que procesamos para nuestros clientes . eCommerce. Una de nuestras principales áreas de actividad es el desarrollo de modelos de e-commerce. Desde la venta privada a la tienda online con catálogo. 06/03/12 AUTORE
  11. 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE En MediaNet las personas son siempre lo primero, porque hay otra forma de entender la tecnología. 06/03/12 AUTORE
  12. 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE
  13. 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE
  14. 06/03/12 AUTORE 06/03/12 AUTORE
  15. 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE
  16. 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE
  17. 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE
  18. 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE
  19. 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE
  20. 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE
  21. 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE
  22. 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE
  23. 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE
  24. 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE
  25. 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE
  26. 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE
  27. 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE
  28. 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE
  29. 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE
  30. 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE
  31. 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE
  32. 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE
  33. 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE
  34. 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE
  35. 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE
  36. 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE
  37. 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE
  38. 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE
  39. 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE
  40. 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE
  41. 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE
  42. 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE
  43. 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE
  44. 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE
  45. 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE
  46. 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE
  47. 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE
  48. 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE
  49. 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE
  50. 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE
  51. 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE
  52. 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE
  53. 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE
  54. 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE
  55. 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE
  56. 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE
  57. 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE
  58. 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE
  59. 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE
  60. 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE
  61. 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE
  62. 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE
  63. 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE
  64. 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE
  65. 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE
  66. 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE
  67. 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE
  68. 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE
  69. 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE
  70. 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE
  71. 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE
  72. 06/03/12 AUTORE 06/03/12 AUTORE 06/03/12 AUTORE