Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Frontend Progress & CoffeeScript

Frontend Progress & CoffeeScript

Nesta palestra vamos falar sobre qual a importância de novas ferramentas e abstrações como Coffeescript e como evitar a luta contra essas novas ferramentas pode impactar o que será o ambiente de client side development no futuro.

danielvlopes

October 20, 2012
Tweet

More Decks by danielvlopes

Other Decks in Programming

Transcript

  1. if (files) { BrowseDrag.updateStatus(e, files); } else if (e.data &&

    e.data.types && e.data.types.contains('Files')) { CrossDomainUploader.showIndicators(e); }
  2. CustomMonocle.Controls.StyleManager = (function() { StyleManager.prototype.styleChanging = false; StyleManager.prototype.styleSheetIndex = null;

    StyleManager.prototype.resetStylesheet = "..."; function StyleManager(reader) { var _this = this; this.reader = reader; this.reader.listen('stylesheetchanging', function() { return _this.styleChanging = true; }); this.reader.listen('stylesheetchange', function() { return _this.styleChanging = false; }); } StyleManager.prototype.refresh = function(style, fn) { if (!this.styleChanging) { if (this.styleSheetIndex != null) { this.reader.removePageStyles(this.styleSheetIndex); } this.reader.addPageStyles(style); if (fn != null) { return fn(); } } }; return StyleManager; })();
  3. class CustomMonocle.Controls.StyleManager styleChanging: false styleSheetIndex: null resetStylesheet: "..." constructor: (@reader)

    -> @reader.listen 'stylesheetchanging', => @styleChanging = true @reader.listen 'stylesheetchange', => @styleChanging = false refresh: (style, fn) -> unless @styleChanging @reader.removePageStyles @styleSheetIndex if @styleSheetIndex? @reader.addPageStyles style fn() if fn?
  4. 2 Semanas Mix de Scheme and Self sob uma casca

    de Java. https://brendaneich.com/2008/04/popularity/
  5. 2 Semanas Mix de Scheme and Self sob uma casca

    de Java. “ ... parte boa não é original, e a parte original não é boa. ” https://brendaneich.com/2008/04/popularity/
  6. 2 Semanas Mix de Scheme and Self sob uma casca

    de Java. “ ... filho de uma rapidinha entre C e Self ... ” “ ... parte boa não é original, e a parte original não é boa. ” https://brendaneich.com/2008/04/popularity/
  7. na prática Contrato importante Menos de 2 meses de prazo

    Escopo fixo Aproximadamente 800 horas Dependências em alfa no browser Mobile & Desktop
  8. var civic = new Car( "Honda Civic", 2009, 20000 );

    var mondeo = new Car( "Ford Mondeo", 2010, 5000 );
  9. function Car( model, year, miles ) { this.model = model;

    this.year = year; this.miles = miles; this.toString = function () { return this.model + " has done " + this.miles + " miles"; }; }
  10. var Car = (function() { function Car(model, year, miles) {

    this.model = model; this.year = year; this.miles = miles; } Car.prototype.toString = function() { return " " + this.model + " (" + this.year + ") has done " + this.miles + " miles"; }; return Car; })();
  11. var Car = (function () { var model, year, miles;

    return { initialize: function (_model, _year, _miles) { model = _model; year = _year; miles = _miles; }, toString: function () { return " " + this.model + " (" + this.year + ") has done " + this.miles + " miles"; } }; })();
  12. function Car(model, year, miles) { this.toString = function() { return

    " " + this.model + " (" + this.year + ") has done " + this.miles + " miles"; }; }
  13. class Car constructor: (@model, @year, @miles) -> toString: -> "

    #{@model} (#{@year}) has done #{@miles} miles"
  14. var foo = "foo"; var bar = "bar"; var baz

    = "baz"; (function(){ var foo = "not foo", bar = "not bar" baz = "not baz"; }()); console.log("foo: %s, bar: %s, baz: %s", foo, bar, baz);
  15. var foo = "foo"; var bar = "bar"; var baz

    = "baz"; (function(){ var foo = "not foo", bar = "not bar" baz = "not baz"; }()); console.log("foo: %s, bar: %s, baz: %s", foo, bar, baz); # foo: foo, bar: bar, baz: not baz
  16. var foo = "foo"; var bar = "bar"; var baz

    = "baz"; (function(){ var foo = "not foo", bar = "not bar" baz = "not baz"; }()); console.log("foo: %s, bar: %s, baz: %s", foo, bar, baz); # foo: foo, bar: bar, baz: not baz
  17. Human.prototype.loadBrain = function() { this.brain = 'loading...'; var that =

    this; $.get('ajax/brain', function(data) { that.brain = data; }); };
  18. for (var i = 1; i <= 3; i++) {

    setTimeout(function() { console.log(i); }, 0); }
  19. for (var i = 1; i <= 3; i++) {

    setTimeout(function() { console.log(i); }, 0); } # 4 # 4 # 4
  20. for (var i = 1; i <= 3; i++) {

    (function(i) { setTimeout(function() { console.log(i); }, 0); })(i); } # 1 # 2 # 3
  21. '' == '0' // false 0 == '' // true

    0 == '0' // true false == 'false' // false false == '0' // true false == undefined // false false == null // false null == undefined // true ' \t\r\n ' == 0 // true
  22. '' == '0' // false 0 == '' // false

    0 == '0' // false false == 'false' // false false == '0' // false false == undefined // false false == null // false null == undefined // false ' \t\r\n ' == 0 // false
  23. '' == '0' 0 == '' 0 == '0' false

    == 'false' false == '0' false == undefined false == null null == undefined ' \t\r\n ' == 0 '' === '0' 0 === '' 0 === '0' false === 'false' false === '0' false === void 0 false === null null === void 0 ' \t\r\n ' === 0
  24. IMHO precisamos de abstrações coffee, clojurescript, etc... precisamos de tools

    melhores acessibilidade p/ novos devs HOJE: resultado satisfatório para RIA FUTURO: pode ser promissor