ECMASCRIPT HARMONY PlovdivConf 2015 - - PowerPoint PPT Presentation

ecmascript harmony
SMART_READER_LITE
LIVE PREVIEW

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


slide-1
SLIDE 1

ECMASCRIPT HARMONY

PlovdivConf 2015

slide-2
SLIDE 2

ЙОРДАН ИВАНОВ

 https://github.com/ivanovyordan  http://ivanovyordan.com

slide-3
SLIDE 3

КОИ СТЕ ВИЕ?

slide-4
SLIDE 4

ВЪВЕДЕНИЕ

slide-5
SLIDE 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%

slide-6
SLIDE 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')); });

slide-7
SLIDE 7

КАКВО НОВО?

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

slide-8
SLIDE 8

LET И CONST

function let_const() { let foo; if(true) { // OK const foo = 'bar'; // Error foo = 'baz'; } // Error let foo = 'baz'; }

slide-9
SLIDE 9

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

slide-10
SLIDE 10

OBJECT.OBSERVE()

let obj = { foo: 0, bar: 1 }; Object.observe(obj, function(changes) { console.log(changes); });

  • bj.baz = 2;

// [{name: 'baz', object: [object], type: 'add'}]

slide-11
SLIDE 11

СТОЙНОСТИ ПО ПОДРАЗБИРАНЕ

function setBackgroundColor(element, color = 'rosybrown') { element.style.backgroundColor = color; } setBackgroundColor(someDiv); // 'rosybrown' setBackgroundColor(someDiv, undefined); // 'rosybrown' setBackgroundColor(someDiv, 'blue'); // 'blue'

slide-12
SLIDE 12

ОСТАВАЩИ ПАРАМЕТРИ

let add = function(category, ...items) { console.log(category + ': ' + items.join(', ')); }; add('fruit', 'apple'); // fruit: apple add('dairy', 'milk', 'cheese'); // dairy: milk, cheese

slide-13
SLIDE 13

ARROWS

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

slide-14
SLIDE 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)]); });

slide-15
SLIDE 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; } }

slide-16
SLIDE 16

ШАБЛОНИ

const template = `<table> ${people.map(person => ` <tr> <td>$${person.firstName}</td> <td>$${person.lastName}</td> </tr> )}` </table>`;

slide-17
SLIDE 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));

slide-18
SLIDE 18

ВЪПРОСИ

slide-19
SLIDE 19

БЛАГОДАРЯ ВИ