SlideShare una empresa de Scribd logo
MEAN, ¿otro buzzword?
Introducción a MEAN y esas mandangas en Javascript
Jorge Jiménez
www.semurat.es
@semurat
Desarrollador software freelance
Prostituto del código
Promiscuo con los lenguajes
Geek
Freak
Miembro de:
AgileCyl
CyLicon Valley
Javascript
“Node.js® is a JavaScript runtime built
on Chrome's V8 JavaScript engine.
Node.js uses an event-driven, non-
blocking I/O model that makes it
lightweight and efficient. Node.js'
package ecosystem, npm, is the largest
ecosystem of open source libraries in
the world.”
“Node.js® is a JavaScript runtime built
on Chrome's V8 JavaScript engine.
Node.js uses an event-driven, non-
blocking I/O model that makes it
lightweight and efficient. Node.js'
package ecosystem, npm, is the largest
ecosystem of open source libraries in
the world.”
“Node.js® is a JavaScript runtime built
on Chrome's V8 JavaScript engine.
Node.js uses an event-driven, non-
blocking I/O model that makes it
lightweight and efficient. Node.js'
package ecosystem, npm, is the largest
ecosystem of open source libraries in
the world.”
Javascript en el servidor
Orientado a Eventos: Event-loop
No bloqueante: I/O asíncrona
Un único thread
Async vs Sync
Blocking vs Non-Blocking
Código bloqueante
Código no bloqueante
Gestor de Paquetes
Problemas
Javascript para backend!!!
Callback Hell
Ecosistema joven
Despliegue y packaging en cliente
Aprendizaje Javascript en backend
Paquete de NodeJS
Enrutado
Manejo de errores
Manejo de plantillas
Middleware
Middleware
Routing
Templating
static-files
Cookies
Tokens
….
Scaffolding con express
> npm install -g express-generator
> express myApp
Templates
jade
handlebars
ejs
hogan
CSS
Less
Stylus
Compass
SASS
Middleware
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
Routing
app.get('/employees/:id', function(res, res, next){...});
app.get(‘/employees/:id?', function(res, res, next){...});
Verbo (GET, POST, PUT, DELETE) + PATH
Alternativas
Hapi.js (http://hapijs.com/)
Sails.js (http://sailsjs.org/)
RESTify (http://mcavage.me/node-restify/)
Derby (http://derbyjs.com/)
Tower (http://towerjs.org/)
Tako (https://github.com/mikeal/tako)
Flatiron (http://flatironjs.org/)
Problemas
Limitada extensibilidad: Connect module
Lógica de Negocio: poco aislada, mala reutilización de servicio
Configuración por código
“MongoDB is an open-source schema-
free document database that provides
high performance, high availability, and
automatic scaling.”
NoSQL
Pros:
Se ejecutan en máquinas de poco recursos
Escalabilidad horizontal
Grandes cantidades de datos
Scheme-less
Frente SQL:
No utilizan SQL
Scheme-less
No permiten JOINs
MongoDB
Orientada a documentos (BSON)
Se basa en colecciones
Balanceo de carga automático (auto-sharding)
Soporte para índices
MongoDB
Ciertas aplicaciones web
Gestión de contenido semiestructurado
Analíticas en tiempo real & Trazabilidad en alta velocidad.
Caching y Alta escalabilidad
Bueno para….
MongoDB
Aplicaciones de alta transaccionalidad
Problemas que requieren el uso de SQL
Pero…
MongoDB
CRUD: insert, find, update, remove
Operadores condicionales: $gt, $lt, $gte, $lte
$or, $not, $in
Expresiones regulares
Operaciones sobre arrays
Consultas sobre documentos embebidos
Operaciones
MongoDB
BSON: Binary JSON
MongoDB
Database Database
Collection Table
Document Register
MongoDB
NodeJS
+
Mongoose mongojs
Problemas
Full text search: mejor Elasticsearch
No es relacional
No es transaccional
Problema con updates
Composición con agregados
Sincronización de documentos en updates
“Framework Javascript construido para
el desarrollo front-end rápido y
dinámico.”
AngularJS
AngularJS
SPA (Single Page Applications)
2-way data binding
Inyección de dependencias
MVVM
Manipula el DOM, no HTML
AngularJS
SPA (Single Page Applications)
Comunicación AJAX
Uso de plantilla
Enrutado en cliente
AngularJS
SPA (Single Page Applications)
Browser History SEO
Problemas!!!
AngularJS
SPA (Single Page Applications)
Ember.js (http://emberjs.com/)
Backbone (http://backbonejs.org/)
Marionette (http://marionettejs.com/)
Knockout (http://knockoutjs.com/)
Batman (http://batmanjs.org/)
React (http://facebook.github.io/react/)
Alternativas:
AngularJS
Directivas
Crear nuevas tags HTML que funcionen como widgets.
“Decorar” elementos con comportamiento y manipular el DOM
AngularJS
Directivas
ng-app
ng-controller
ng-href
ng-src
ng-disabled
ng-checked
ng-readonly
….
AngularJS
Filtros
AngularJS
Routes
Testing
&
Building
task
src
pipe
dest
watch
http://www.cyliconvalley.es
@cylicon_valley

Más contenido relacionado

La actualidad más candente

Mvc + html5 + css3
Mvc + html5 + css3Mvc + html5 + css3
Mvc + html5 + css3Marc Rubiño
 
ASP.NET MVC Workshop Día 3
ASP.NET MVC Workshop Día 3ASP.NET MVC Workshop Día 3
ASP.NET MVC Workshop Día 3
Rodolfo Finochietti
 
Sácale todo el provecho a Stylus el mejor pre procesador de CSS
Sácale todo el provecho a Stylus el mejor pre procesador de CSSSácale todo el provecho a Stylus el mejor pre procesador de CSS
Sácale todo el provecho a Stylus el mejor pre procesador de CSS
Leonidas Esteban González
 
Plainconcepts .Net Core Event - Real Time Applications
Plainconcepts .Net Core Event - Real Time ApplicationsPlainconcepts .Net Core Event - Real Time Applications
Plainconcepts .Net Core Event - Real Time Applications
Carlos Landeras Martínez
 
React, Flux y React native
React, Flux y React nativeReact, Flux y React native
React, Flux y React native
Eduard Tomàs
 
Single Page Application - Aníbal Rojas
Single Page Application - Aníbal RojasSingle Page Application - Aníbal Rojas
Single Page Application - Aníbal Rojas
Caracas-Tech-Meetup
 
Introducción a Asp.Net Mvc
Introducción a Asp.Net MvcIntroducción a Asp.Net Mvc
Introducción a Asp.Net Mvc
Gustavo Alzate Sandoval
 
SpringIO 2012 Madrid-Escalabilidad con Grails
SpringIO 2012 Madrid-Escalabilidad con GrailsSpringIO 2012 Madrid-Escalabilidad con Grails
SpringIO 2012 Madrid-Escalabilidad con Grails
Domingo Suarez Torres
 
De escritorio a Javascript, nuestra experiencia desde las trincheras
De escritorio a Javascript, nuestra experiencia desde las trincherasDe escritorio a Javascript, nuestra experiencia desde las trincheras
De escritorio a Javascript, nuestra experiencia desde las trincheras
Roberto Luis Bisbé
 
Introducción a NodeJS
Introducción a NodeJSIntroducción a NodeJS
Introducción a NodeJS
Alberto Gimeno
 
Conociendo ReactJs . Scio Talks
Conociendo ReactJs . Scio TalksConociendo ReactJs . Scio Talks
Conociendo ReactJs . Scio Talks
Scio Consulting
 
NodeJS
NodeJSNodeJS
APIs REST
APIs RESTAPIs REST
Java programacion
Java programacionJava programacion
Java programacionJose Calva
 
React redux workshop
React redux workshopReact redux workshop
React redux workshop
Daniel Ochoa John
 
ALM con Visual Studio y TFS 2013
ALM con Visual Studio y TFS 2013ALM con Visual Studio y TFS 2013
ALM con Visual Studio y TFS 2013
Rodolfo Finochietti
 
React – ¿Qué es React.js?
React – ¿Qué es React.js?React – ¿Qué es React.js?
React – ¿Qué es React.js?
Gorka Magaña
 

La actualidad más candente (18)

Mvc + html5 + css3
Mvc + html5 + css3Mvc + html5 + css3
Mvc + html5 + css3
 
Presentacion
PresentacionPresentacion
Presentacion
 
ASP.NET MVC Workshop Día 3
ASP.NET MVC Workshop Día 3ASP.NET MVC Workshop Día 3
ASP.NET MVC Workshop Día 3
 
Sácale todo el provecho a Stylus el mejor pre procesador de CSS
Sácale todo el provecho a Stylus el mejor pre procesador de CSSSácale todo el provecho a Stylus el mejor pre procesador de CSS
Sácale todo el provecho a Stylus el mejor pre procesador de CSS
 
Plainconcepts .Net Core Event - Real Time Applications
Plainconcepts .Net Core Event - Real Time ApplicationsPlainconcepts .Net Core Event - Real Time Applications
Plainconcepts .Net Core Event - Real Time Applications
 
React, Flux y React native
React, Flux y React nativeReact, Flux y React native
React, Flux y React native
 
Single Page Application - Aníbal Rojas
Single Page Application - Aníbal RojasSingle Page Application - Aníbal Rojas
Single Page Application - Aníbal Rojas
 
Introducción a Asp.Net Mvc
Introducción a Asp.Net MvcIntroducción a Asp.Net Mvc
Introducción a Asp.Net Mvc
 
SpringIO 2012 Madrid-Escalabilidad con Grails
SpringIO 2012 Madrid-Escalabilidad con GrailsSpringIO 2012 Madrid-Escalabilidad con Grails
SpringIO 2012 Madrid-Escalabilidad con Grails
 
De escritorio a Javascript, nuestra experiencia desde las trincheras
De escritorio a Javascript, nuestra experiencia desde las trincherasDe escritorio a Javascript, nuestra experiencia desde las trincheras
De escritorio a Javascript, nuestra experiencia desde las trincheras
 
Introducción a NodeJS
Introducción a NodeJSIntroducción a NodeJS
Introducción a NodeJS
 
Conociendo ReactJs . Scio Talks
Conociendo ReactJs . Scio TalksConociendo ReactJs . Scio Talks
Conociendo ReactJs . Scio Talks
 
NodeJS
NodeJSNodeJS
NodeJS
 
APIs REST
APIs RESTAPIs REST
APIs REST
 
Java programacion
Java programacionJava programacion
Java programacion
 
React redux workshop
React redux workshopReact redux workshop
React redux workshop
 
ALM con Visual Studio y TFS 2013
ALM con Visual Studio y TFS 2013ALM con Visual Studio y TFS 2013
ALM con Visual Studio y TFS 2013
 
React – ¿Qué es React.js?
React – ¿Qué es React.js?React – ¿Qué es React.js?
React – ¿Qué es React.js?
 

Similar a MEAN ¿otro buzzword?

Desarrollo de Aplicaciones con Node.js | INTERSYS UNPRG | 2012
Desarrollo de Aplicaciones con Node.js | INTERSYS UNPRG | 2012Desarrollo de Aplicaciones con Node.js | INTERSYS UNPRG | 2012
Desarrollo de Aplicaciones con Node.js | INTERSYS UNPRG | 2012
Pilmee Gates
 
Google Web Toolkit (GWT) en entornos empresariales
Google Web Toolkit (GWT) en entornos empresarialesGoogle Web Toolkit (GWT) en entornos empresariales
Google Web Toolkit (GWT) en entornos empresariales
Tecsisa
 
Programación Reactiva, Javascript Isomorfo y Meteorjs !
Programación Reactiva, Javascript Isomorfo y Meteorjs !Programación Reactiva, Javascript Isomorfo y Meteorjs !
Programación Reactiva, Javascript Isomorfo y Meteorjs !
ouuyeah
 
Micro vs Nano (servicios)
Micro vs Nano (servicios)Micro vs Nano (servicios)
Micro vs Nano (servicios)
Pedro J. Molina
 
Despliegue de Aplicaciones .Net Core en Docker
Despliegue de Aplicaciones .Net Core en DockerDespliegue de Aplicaciones .Net Core en Docker
Despliegue de Aplicaciones .Net Core en Docker
Ernesto Cardenas Cangahuala
 
Aprendiendo a Programas en 4 horas JavaScript
Aprendiendo a Programas en 4 horas JavaScriptAprendiendo a Programas en 4 horas JavaScript
Aprendiendo a Programas en 4 horas JavaScript
Karsarmi
 
AWS Presentacion Universidad de los Andes "Escalando para sus primeros 10 Mil...
AWS Presentacion Universidad de los Andes "Escalando para sus primeros 10 Mil...AWS Presentacion Universidad de los Andes "Escalando para sus primeros 10 Mil...
AWS Presentacion Universidad de los Andes "Escalando para sus primeros 10 Mil...Amazon Web Services
 
MEAN Stack
MEAN StackMEAN Stack
MEAN Stack
José Moreno
 
SGBD Y TECNOLOGIAS
SGBD Y TECNOLOGIASSGBD Y TECNOLOGIAS
SGBD Y TECNOLOGIAS
Paulo Anaya Dionicio
 
Sgbd y tecnologias
Sgbd  y  tecnologiasSgbd  y  tecnologias
Sgbd y tecnologias
Paulo Anaya Dionicio
 
Aprendiendo GWT
Aprendiendo GWTAprendiendo GWT
Aprendiendo GWT
Manuel Carrasco Moñino
 
Escalando para sus primeros 10 millones de usuarios
Escalando para sus primeros 10 millones de usuariosEscalando para sus primeros 10 millones de usuarios
Escalando para sus primeros 10 millones de usuarios
Amazon Web Services LATAM
 
Gwt seminario java_hispano_manolocarrasco
Gwt seminario java_hispano_manolocarrascoGwt seminario java_hispano_manolocarrasco
Gwt seminario java_hispano_manolocarrascoManuel Carrasco Moñino
 
Tecnologias emergentes node js
Tecnologias emergentes node jsTecnologias emergentes node js
Tecnologias emergentes node js
Erick Aguila Martínez
 
Code Blast 2012 - Fast Mobile Prototyping
Code Blast 2012 - Fast Mobile PrototypingCode Blast 2012 - Fast Mobile Prototyping
Code Blast 2012 - Fast Mobile Prototyping
INSIGNIA4U
 
Comenzando con aplicaciones serverless en AWS
Comenzando con aplicaciones serverless en AWSComenzando con aplicaciones serverless en AWS
Comenzando con aplicaciones serverless en AWS
Amazon Web Services LATAM
 
Comenzando con Arquitecturas sin servidores
Comenzando con Arquitecturas sin servidoresComenzando con Arquitecturas sin servidores
Comenzando con Arquitecturas sin servidores
Amazon Web Services LATAM
 
Jc Web20 Open Source Why Floss2007
Jc Web20 Open Source Why Floss2007Jc Web20 Open Source Why Floss2007
Jc Web20 Open Source Why Floss2007
guest976d083
 
Big Data en Azure: Azure Data Lake
Big Data en Azure: Azure Data LakeBig Data en Azure: Azure Data Lake
Big Data en Azure: Azure Data Lake
Guillermo Javier Bellmann
 

Similar a MEAN ¿otro buzzword? (20)

Desarrollo de Aplicaciones con Node.js | INTERSYS UNPRG | 2012
Desarrollo de Aplicaciones con Node.js | INTERSYS UNPRG | 2012Desarrollo de Aplicaciones con Node.js | INTERSYS UNPRG | 2012
Desarrollo de Aplicaciones con Node.js | INTERSYS UNPRG | 2012
 
Google Web Toolkit (GWT) en entornos empresariales
Google Web Toolkit (GWT) en entornos empresarialesGoogle Web Toolkit (GWT) en entornos empresariales
Google Web Toolkit (GWT) en entornos empresariales
 
Programación Reactiva, Javascript Isomorfo y Meteorjs !
Programación Reactiva, Javascript Isomorfo y Meteorjs !Programación Reactiva, Javascript Isomorfo y Meteorjs !
Programación Reactiva, Javascript Isomorfo y Meteorjs !
 
Micro vs Nano (servicios)
Micro vs Nano (servicios)Micro vs Nano (servicios)
Micro vs Nano (servicios)
 
Despliegue de Aplicaciones .Net Core en Docker
Despliegue de Aplicaciones .Net Core en DockerDespliegue de Aplicaciones .Net Core en Docker
Despliegue de Aplicaciones .Net Core en Docker
 
Aprendiendo a Programas en 4 horas JavaScript
Aprendiendo a Programas en 4 horas JavaScriptAprendiendo a Programas en 4 horas JavaScript
Aprendiendo a Programas en 4 horas JavaScript
 
AWS Presentacion Universidad de los Andes "Escalando para sus primeros 10 Mil...
AWS Presentacion Universidad de los Andes "Escalando para sus primeros 10 Mil...AWS Presentacion Universidad de los Andes "Escalando para sus primeros 10 Mil...
AWS Presentacion Universidad de los Andes "Escalando para sus primeros 10 Mil...
 
MEAN Stack
MEAN StackMEAN Stack
MEAN Stack
 
SGBD Y TECNOLOGIAS
SGBD Y TECNOLOGIASSGBD Y TECNOLOGIAS
SGBD Y TECNOLOGIAS
 
Sgbd y tecnologias
Sgbd  y  tecnologiasSgbd  y  tecnologias
Sgbd y tecnologias
 
Aprendiendo GWT
Aprendiendo GWTAprendiendo GWT
Aprendiendo GWT
 
Escalando para sus primeros 10 millones de usuarios
Escalando para sus primeros 10 millones de usuariosEscalando para sus primeros 10 millones de usuarios
Escalando para sus primeros 10 millones de usuarios
 
Gwt seminario java_hispano_manolocarrasco
Gwt seminario java_hispano_manolocarrascoGwt seminario java_hispano_manolocarrasco
Gwt seminario java_hispano_manolocarrasco
 
Tecnologias emergentes node js
Tecnologias emergentes node jsTecnologias emergentes node js
Tecnologias emergentes node js
 
Code Blast 2012 - Fast Mobile Prototyping
Code Blast 2012 - Fast Mobile PrototypingCode Blast 2012 - Fast Mobile Prototyping
Code Blast 2012 - Fast Mobile Prototyping
 
Comenzando con aplicaciones serverless en AWS
Comenzando con aplicaciones serverless en AWSComenzando con aplicaciones serverless en AWS
Comenzando con aplicaciones serverless en AWS
 
Comenzando con Arquitecturas sin servidores
Comenzando con Arquitecturas sin servidoresComenzando con Arquitecturas sin servidores
Comenzando con Arquitecturas sin servidores
 
Jc Web20 Open Source Why Floss2007
Jc Web20 Open Source Why Floss2007Jc Web20 Open Source Why Floss2007
Jc Web20 Open Source Why Floss2007
 
Big Data en Azure: Azure Data Lake
Big Data en Azure: Azure Data LakeBig Data en Azure: Azure Data Lake
Big Data en Azure: Azure Data Lake
 
Sgbd mongodb
Sgbd   mongodbSgbd   mongodb
Sgbd mongodb
 

Último

Tango-Gestion-Delta2.pdf...para aprender
Tango-Gestion-Delta2.pdf...para aprenderTango-Gestion-Delta2.pdf...para aprender
Tango-Gestion-Delta2.pdf...para aprender
AgostinaZarate
 
Introducción_a_las_APIs_y_Desarrollo_Back-end-Abbie Dominguez Girondo.pdf
Introducción_a_las_APIs_y_Desarrollo_Back-end-Abbie Dominguez Girondo.pdfIntroducción_a_las_APIs_y_Desarrollo_Back-end-Abbie Dominguez Girondo.pdf
Introducción_a_las_APIs_y_Desarrollo_Back-end-Abbie Dominguez Girondo.pdf
AbbieDominguezGirond
 
Arquitectura de Sistema de Reservaciones
Arquitectura de Sistema de ReservacionesArquitectura de Sistema de Reservaciones
Arquitectura de Sistema de Reservaciones
AlanL15
 
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJECONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
SamuelGampley
 
TECLADO ERGONÓMICO Y PANTALLAS TACTILES.pptx
TECLADO ERGONÓMICO Y PANTALLAS TACTILES.pptxTECLADO ERGONÓMICO Y PANTALLAS TACTILES.pptx
TECLADO ERGONÓMICO Y PANTALLAS TACTILES.pptx
KatiuskaDominguez2
 
PC-04-DISEÑOS DE PITS Y STOPES DE UNA MINA A TAJO ABIERTO.pdf
PC-04-DISEÑOS DE PITS Y STOPES DE UNA MINA A TAJO ABIERTO.pdfPC-04-DISEÑOS DE PITS Y STOPES DE UNA MINA A TAJO ABIERTO.pdf
PC-04-DISEÑOS DE PITS Y STOPES DE UNA MINA A TAJO ABIERTO.pdf
JhenryHuisa1
 

Último (6)

Tango-Gestion-Delta2.pdf...para aprender
Tango-Gestion-Delta2.pdf...para aprenderTango-Gestion-Delta2.pdf...para aprender
Tango-Gestion-Delta2.pdf...para aprender
 
Introducción_a_las_APIs_y_Desarrollo_Back-end-Abbie Dominguez Girondo.pdf
Introducción_a_las_APIs_y_Desarrollo_Back-end-Abbie Dominguez Girondo.pdfIntroducción_a_las_APIs_y_Desarrollo_Back-end-Abbie Dominguez Girondo.pdf
Introducción_a_las_APIs_y_Desarrollo_Back-end-Abbie Dominguez Girondo.pdf
 
Arquitectura de Sistema de Reservaciones
Arquitectura de Sistema de ReservacionesArquitectura de Sistema de Reservaciones
Arquitectura de Sistema de Reservaciones
 
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJECONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
 
TECLADO ERGONÓMICO Y PANTALLAS TACTILES.pptx
TECLADO ERGONÓMICO Y PANTALLAS TACTILES.pptxTECLADO ERGONÓMICO Y PANTALLAS TACTILES.pptx
TECLADO ERGONÓMICO Y PANTALLAS TACTILES.pptx
 
PC-04-DISEÑOS DE PITS Y STOPES DE UNA MINA A TAJO ABIERTO.pdf
PC-04-DISEÑOS DE PITS Y STOPES DE UNA MINA A TAJO ABIERTO.pdfPC-04-DISEÑOS DE PITS Y STOPES DE UNA MINA A TAJO ABIERTO.pdf
PC-04-DISEÑOS DE PITS Y STOPES DE UNA MINA A TAJO ABIERTO.pdf
 

MEAN ¿otro buzzword?