ecmascript harmony
play

ECMASCRIPT HARMONY PlovdivConf 2015 - PowerPoint PPT Presentation

ECMASCRIPT HARMONY PlovdivConf 2015 https://github.com/ivanovyordan http://ivanovyordan.com ? http://kangax.github.io/compat-table/es6


  1. ECMASCRIPT HARMONY PlovdivConf 2015

  2. ЙОРДАН ИВАНОВ  https://github.com/ivanovyordan  http://ivanovyordan.com

  3. КОИ СТЕ ВИЕ ?

  4. ВЪВЕДЕНИЕ

  5. СЪВМЕСТИМОСТ http://kangax.github.io/compat-table/es6 Платформа Съвместимост Babel.js 76% Microsoft Edge 72% Mozilla Firefox 37 62% Traceur 60% Google Chrome 42 43% Microsoft IE 11 15%

  6. КАКВО ДА ПРАВИМ ДНЕС ? https://babeljs.io https://github.com/google/traceur-compiler var gulp = require('gulp'); var babel = require('gulp­babel'); gulp.task('default', function () { return gulp.src('src/app.js') .pipe(babel()) .pipe(gulp.dest('dist')); });

  7. КАКВО НОВО ? let и const Object.observe() Аргументи Arrows Promises Класове Шаблони Модули

  8. LET И CONST function let_const() { let foo; if(true) { // OK const foo = 'bar'; // Error foo = 'baz'; } // Error let foo = 'baz'; }

  9. function letTest() { let x = 31; { let x = 71; console.log(x); // 71 } console.log(x); // 31 }

  10. OBJECT.OBSERVE() let obj = { foo: 0, bar: 1 }; Object.observe(obj, function(changes) { console.log(changes); }); obj.baz = 2; // [{name: 'baz', object: [object], type: 'add'}]

  11. СТОЙНОСТИ ПО ПОДРАЗБИРАНЕ function setBackgroundColor(element, color = 'rosybrown') { element.style.backgroundColor = color; } setBackgroundColor(someDiv); // 'rosybrown' setBackgroundColor(someDiv, undefined); // 'rosybrown' setBackgroundColor(someDiv, 'blue'); // 'blue'

  12. ОСТАВАЩИ ПАРАМЕТРИ let add = function(category, ...items) { console.log(category + ': ' + items.join(', ')); }; add('fruit', 'apple'); // fruit: apple add('dairy', 'milk', 'cheese'); // dairy: milk, cheese

  13. ARROWS let bob = { name: 'Bob', friends: [], printFriends() { this.friends.forEach(friend => { console.log(this.name + ' knows ' + friend); }); } }

  14. PROMISES function timeout(duration = 0) { return new Promise((resolve, reject) => { setTimeout(resolve, duration); }); } let promise = timeout(1000).then(() => { return timeout(2000); }).then(() => { throw new Error('hmm'); }).catch(err => { return Promise.all([timeout(100), timeout(200)]); });

  15. КЛАСОВЕ class Barracks extends Building { constructor({x, y}) { let position = new Position(x, y); super(position); } spawnMarine() { return new Marine('Jim Raynor'); } static price() { return 150; } }

  16. ШАБЛОНИ const template = `<table> ${people.map(person => ` <tr> <td>$${person.firstName}</td> <td>$${person.lastName}</td> </tr> )}` </table>`;

  17. МОДУЛИ // lib/math.js export function sum(x, y) { return x + y; }; export var pi = 3.141593; // app.js import * as math from 'lib/math'; alert('2π = ' + math.sum(math.pi, math.pi));

  18. ВЪПРОСИ

  19. БЛАГОДАРЯ ВИ

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend