SlideShare une entreprise Scribd logo
1  sur  61
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

Contenu connexe

Tendances

Mvc + html5 + css3
Mvc + html5 + css3Mvc + html5 + css3
Mvc + html5 + css3Marc Rubiño
 
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 CSSLeonidas 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 ApplicationsCarlos Landeras Martínez
 
React, Flux y React native
React, Flux y React nativeReact, Flux y React native
React, Flux y React nativeEduard Tomàs
 
Single Page Application - Aníbal Rojas
Single Page Application - Aníbal RojasSingle Page Application - Aníbal Rojas
Single Page Application - Aníbal RojasCaracas-Tech-Meetup
 
SpringIO 2012 Madrid-Escalabilidad con Grails
SpringIO 2012 Madrid-Escalabilidad con GrailsSpringIO 2012 Madrid-Escalabilidad con Grails
SpringIO 2012 Madrid-Escalabilidad con GrailsDomingo 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 trincherasRoberto Luis Bisbé
 
Introducción a NodeJS
Introducción a NodeJSIntroducción a NodeJS
Introducción a NodeJSAlberto Gimeno
 
Conociendo ReactJs . Scio Talks
Conociendo ReactJs . Scio TalksConociendo ReactJs . Scio Talks
Conociendo ReactJs . Scio TalksScio Consulting
 
Java programacion
Java programacionJava programacion
Java programacionJose Calva
 
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 2013Rodolfo Finochietti
 
React – ¿Qué es React.js?
React – ¿Qué es React.js?React – ¿Qué es React.js?
React – ¿Qué es React.js?Gorka Magaña
 

Tendances (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?
 

Similaire à 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 | 2012Pilmee 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 empresarialesTecsisa
 
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
 
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 JavaScriptKarsarmi
 
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
 
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 usuariosAmazon 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
 
Code Blast 2012 - Fast Mobile Prototyping
Code Blast 2012 - Fast Mobile PrototypingCode Blast 2012 - Fast Mobile Prototyping
Code Blast 2012 - Fast Mobile PrototypingINSIGNIA4U
 
Comenzando con aplicaciones serverless en AWS
Comenzando con aplicaciones serverless en AWSComenzando con aplicaciones serverless en AWS
Comenzando con aplicaciones serverless en AWSAmazon 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 Floss2007guest976d083
 

Similaire à 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
 

MEAN ¿otro buzzword?