Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

MEAN ¿otro buzzword?

807 views

Published on

Charla dentro del Pucela Tech Day organizado por Cylicon Valley en 2015

Published in: Software
  • Be the first to comment

MEAN ¿otro buzzword?

  1. 1. MEAN, ¿otro buzzword? Introducción a MEAN y esas mandangas en Javascript
  2. 2. 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
  3. 3. Javascript
  4. 4. “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.”
  5. 5. “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.”
  6. 6. “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.”
  7. 7. Javascript en el servidor Orientado a Eventos: Event-loop No bloqueante: I/O asíncrona Un único thread
  8. 8. Async vs Sync
  9. 9. Blocking vs Non-Blocking Código bloqueante Código no bloqueante
  10. 10. Gestor de Paquetes
  11. 11. Problemas Javascript para backend!!! Callback Hell Ecosistema joven Despliegue y packaging en cliente Aprendizaje Javascript en backend
  12. 12. Paquete de NodeJS Enrutado Manejo de errores Manejo de plantillas Middleware
  13. 13. Middleware Routing Templating static-files Cookies Tokens ….
  14. 14. Scaffolding con express > npm install -g express-generator > express myApp
  15. 15. Templates jade handlebars ejs hogan
  16. 16. CSS Less Stylus Compass SASS
  17. 17. 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')));
  18. 18. Routing app.get('/employees/:id', function(res, res, next){...}); app.get(‘/employees/:id?', function(res, res, next){...}); Verbo (GET, POST, PUT, DELETE) + PATH
  19. 19. 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/)
  20. 20. Problemas Limitada extensibilidad: Connect module Lógica de Negocio: poco aislada, mala reutilización de servicio Configuración por código
  21. 21. “MongoDB is an open-source schema- free document database that provides high performance, high availability, and automatic scaling.”
  22. 22. 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
  23. 23. MongoDB Orientada a documentos (BSON) Se basa en colecciones Balanceo de carga automático (auto-sharding) Soporte para índices
  24. 24. MongoDB Ciertas aplicaciones web Gestión de contenido semiestructurado Analíticas en tiempo real & Trazabilidad en alta velocidad. Caching y Alta escalabilidad Bueno para….
  25. 25. MongoDB Aplicaciones de alta transaccionalidad Problemas que requieren el uso de SQL Pero…
  26. 26. 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
  27. 27. MongoDB BSON: Binary JSON
  28. 28. MongoDB Database Database Collection Table Document Register
  29. 29. MongoDB NodeJS + Mongoose mongojs
  30. 30. 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
  31. 31. “Framework Javascript construido para el desarrollo front-end rápido y dinámico.”
  32. 32. AngularJS
  33. 33. AngularJS SPA (Single Page Applications) 2-way data binding Inyección de dependencias MVVM Manipula el DOM, no HTML
  34. 34. AngularJS SPA (Single Page Applications) Comunicación AJAX Uso de plantilla Enrutado en cliente
  35. 35. AngularJS SPA (Single Page Applications) Browser History SEO Problemas!!!
  36. 36. 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:
  37. 37. AngularJS Directivas Crear nuevas tags HTML que funcionen como widgets. “Decorar” elementos con comportamiento y manipular el DOM
  38. 38. AngularJS Directivas ng-app ng-controller ng-href ng-src ng-disabled ng-checked ng-readonly ….
  39. 39. AngularJS Filtros
  40. 40. AngularJS Routes
  41. 41. Testing & Building
  42. 42. task src pipe dest watch
  43. 43. http://www.cyliconvalley.es @cylicon_valley

×