JavaScript no es Vietnam

1,349 views
1,261 views

Published on

Presentación utilizada para una de las MicroCharlas del grupo de usuarios CatDotNet

Published in: Technology, Travel
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,349
On SlideShare
0
From Embeds
0
Number of Embeds
654
Actions
Shares
0
Downloads
7
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

JavaScript no es Vietnam

  1. 1. JavaScript no es VietnamPatrones y pruebas Alex Casquete 1
  2. 2. ESTE SOY YO Alex Casquete twitter: acasquete blog: www.idlebit.es
  3. 3. Hablemos de JavaScript…
  4. 4. JavaScript es…
  5. 5. JavaScript is in the air
  6. 6. JavaScript no es como cualquierotro lenguaje orientado a objetos No vale con tirar líneas de código sin másTiene importantes diferencias con otros lenguajes
  7. 7. var myBeer = { “name” : “Moritz”, “take” : function() { alert(“Great!”); }, “displayName” : function() { alert(this.name + “ is my Beer”); }, “drink” : function() { // not implemented }};myBeer.displayName();myBeer.drink();
  8. 8. PATRONES DE CREACIÓN DE OBJETOSNAMESPACE - DECLARING DEPENDENCIES - PRIVATE PROPERTIES ANDMETHODS – REVELATION PATTERN - MODULE PATTERN - SANDBOX -STATIC MEMBERS - OBJECT CONSTANTS - CHAINING PATTERNPATRONES DE REUTILIZACIÓN DE CÓDIGOPROTOTYPAL INHERITANCE - INHERITANCE BY COPYING PROPERTIES –MIX-INS - BORROWING METHODSPATRONES DE DISEÑOBUILDER – FACTORY – SINGLETON – DECORATOR – FAÇADE – PROXY –CHAIN OF RESPOSIBILITY – COMMAND - ITERATOR – MEDIATOR –OBSERVER - STRATEGY
  9. 9. Patrón Module var basketModule = (function() { var basket = []; //private return { //exposed to public addItem: function(values) { basket.push(values); }, getItemCount: function() { return basket.length; }, getTotal: function(){ var q = this.getItemCount(),p=0; while(q--){ p+= basket[q].price; } return p; } } }()); 9
  10. 10. Patrón Mediator Módulo 1 doSomething Módulo 2 Mediator done! Módulo 3 10
  11. 11. Patrón Mediator var mediator = (function(){ var subscribe = function(channel, fn){ if (!mediator.channels[channel]) mediator.channels[channel] = []; mediator.channels[channel].push({ context: this, callback: fn }); return this; }, publish = function(channel){ if (!mediator.channels[channel]) return false; var args = Array.prototype.slice.call(arguments, 1); for (var i = 0, l = mediator.channels[channel].length; i < l; i++) { var subscription = mediator.channels[channel][i]; subscription.callback.apply(subscription.context, args); } return this; }; return { channels: {}, publish: publish, subscribe: subscribe, installTo: function(obj){ obj.subscribe = subscribe; obj.publish = publish; } }; }()); 11
  12. 12. Patrón Façade var module = (function() { module.facade({run: true, val:10}); var _private = { i:5, //devuelve ‘current value: 10, running’ get : function() { console.log(current value: + this.i); }, set : function( val ) { this.i = val; }, run : function() { console.log(running); }, jump: function(){ console.log(jumping); } }; return { facade : function( args ) { _private.set(args.val); _private.get(); if ( args.run ) { _private.run(); } } } }()); 12
  13. 13. Patterns For Large-Scale JavaScript Application ArchitectureDecouple app. architecture w/module,facade &mediator patterns. Mods publish msgs, mediatoracts as pub/sub mgr & facade handles security http://addyosmani.com/largescalejavascript/
  14. 14. Pruebas
  15. 15. Las pruebas unitarias no son para JavaScript
  16. 16. SI NO PRUEBASTU CÓDIGO VAS A CONOCER EL DOLOR
  17. 17. JavaScript es díficil de probarSi no tenemos nuestro código preparadoCódigo mezclado con HTMLEventos en línea en el HTML
  18. 18. Frameworks Testing JavaScript
  19. 19. Un poco de código
  20. 20. Utiliza patronesNo reinventes la rueda Prueba tu código 20
  21. 21. MicroCharlas CatDotNet 26 de julio 2012

×