Ați încercat ES6? Ce părere aveți?

Dacă tot am avut o perioadă un pic mai liberă, am decis să cercetez un pic care-i treaba cu ES6. Am setat atât un task grunt (babel, eslint) să văd cam ce ar ieși și dacă e rezonabil să folosesc la un proiect real. Primele concluzii:

Am răsfoit cartea lui Zakas și la o primă vedere, astea sunt lucrurile de care sunt încântat:

  • Variabilele definite cu let (au un scope mult mai strict; practic orice variabilă de genul let foo = 'bar' este disponibilă în cele mai apropiate acolade);
  • Parametri impliciți ( function foo( bar = 10, baz = 20 ){});
  • Funcțiile de genul var foo = () => 'bar' (unul din puținele lucruri care îmi plac la coffee script)
  • Migrarea dinspre OOP bazat pe prototipuri spre OOP _class_ic (cu Class, extends, metode statice etc).
  • Binding pentru this (link)
  • Iterators (link)
  • Funcțiile definite în object literals sunt mai ușor de definit:

Stilul vechi:

var foo = {
    bar: function() {}
};

ES6:

var foo = {
    bar() {}
};

O chestie care îmi place la Babel este că transformarea este destul de inteligentă, incluzând shim-urile pentru compatibilitate doar dacă folosești respectivul feature (e.g. nu îți include shim pentru Class dacă nu folosești clase)


2 Likes

Folosesc ES6 de cateva luni, life saver. In general il folosesc doar pentru arrow functions si clase.

Initial voiam sa adopt CoffeeScript, dar dupa putin research am preferat ES6.

1 Like

Ce imi place foarte mult (chestii subiective, nu neaparat major steps)

  • organizarea codului prin imporrt
  • spread operator
  • let si const
  • destructuring asigment
  • ca am scapat de CofeeScript din peisaj (mi se parea odios)
  • string templating (update)

Obsevatie: clasele nu mi se par neaparat ceva extraordinar

4 Likes

Feature-urile care imi plac mie sunt:

Classes sunt ok, dar nu mi se pare ca aduc neaparat ceva nou ci mai mult sugar syntax. Nu ma omor nici cu Promises, prefer raw callback (sic), insa nu ma deranjeaza. Legat de sistemul de module nici aici nu pot spune ca sunt super entuziasmat, practic inlocuiesc require cu import (da, stiu ca exista diferente intre CommonJS si ES6 modules). Legat de let si const sunt ok, dar personal nu am avut vreodata probleme cu hosting && stuff .

1 Like

A devenit ceva mai “civilizat” codul, migreaza spre un ravioli code (cum zice @john_papa), si patterns, fiindca javascript in sine este un spagetti, iar cu acest ES6 il vad mult mai arhitectural daca vreti.
Sunt “imprumutate” features din Coffe si TypeScript. Eu raman pe TypeScript deocamdata, imi place foarte mult si tind sa cred ca este cel mai frumos mod de a țese JS-ul :smiley:

Încă studiez dar la o primă impresie:

  • arrow functions mi se par “bleah”, total subiectiv, mi se pare că vizual strică aspectul codului. La o primă inspecție te cam chinui să vezi unde-i un callback. (EDIT: știu de faza cu this, însă nici asta nu o face mai placută)
  • e ok noua sintaxă OOP, chiar dacă dedesubt e fix aceeași chestie (proto), te scutește de ceva extra cod
  • let mi se pare cam overrated, dacă ai nevoie în mod repetat să folosești același nume de variabilă in blocuri diferite cred că ceva nu e în regulă.
  • default parameters (bun)
  • weakmaps (bun)