Diskuze: Zpátky v JS (nové verze jazyka)
V předchozím kvízu, Online test znalostí JavaScript, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 17 zpráv z 17.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí JavaScript, jsme si ověřili nabyté zkušenosti z kurzu.
Je nový standard ES6, pokud umíš dobře ES5, tak ES6 víceméně nepoužívej, protože si pouze omezíš možnosti a schopnosti JavaScriptu. ES6 zavádí funkce, které uměl ES5 taky akorát se to složitěji psalo, musel si nad tím více přemýšlet, ale zase to mělo víc možností co si s tím pak mohl dělat. Pokud ES5 dokonale neumíš, tak se nauč ES6, je to teď hrozně moderní, cool navíc se podobá spoustě jiných jazyků, tak je i mnohem jednoduší. Podpora je v dnešních prohlížečích celkem dobrá, ale skutečně jenom v dnešních. Existují nějaké věci, které ti zajistí, že i hodně staré prohlížeče budou ES6 rozumět.
Možná kdybys věnoval víc pozornosti těm věcem, které zajišťují podporu v starých prohlížečích, pochopil bys skutečný význam nové specifikace.
Pokud máš pocit, že dokonale umíš es5 a radši bys ručně psal async a await věci pomocí switchů s nekonečnou podmínkou, generátory a iterátory, paráda. Pokud chceš kód stále balit do self-exec funkcí místo modulů, pokud chceš každý callback bindovat na this a nebo používat tu nechutnou prasárnu self, paráda.
Pokud chceš spojovat stringy jako blázen a trpět bolestí hlavy z hoistingu proměnných, mutovat argumenty funkcí, obejít se bez operátorů spread a rest, žít bez defaultního formálního argumentu, paráda.
Jen by ti asi mělo být celkem jasný, že se nikdo nebude obtěžovat po tobě ten kód číst, kód napíšeš pro sebe, napíšeš ho ani pro počítač, píšeš ho pro ostatní. Neměl bys ho proto psát tak, abys byl hrdej na to, jak umíš použít pět prvků a dostat z nich padesát konstrukcí, kód má mít eleganci, schopnost sebepopsání, kvalitu stojící nejen na výkonu a náročnosti na paměť ale i vysokou čitelnost, protože právě v ní spočívá znovuužitelnost kódu.
Vyjadřovat se k něčemu, co jsi evidentně vůbec ale vůbec nepochopil, je ale cool schopnost dnešních mladých programátorů, je to moderní mít názor na to, že všechno nové je na houby protože to už není dost spartanské jako za doby, kdy ses to učil. Umět jazyk ale znamená vidět za jeho horizont, vnímat jeho hranice a překračovat je.
V dnešním jsku je spousta skvělých věcí, které si tam zaslouží být, opravdu vzniká široká škála možností jak psát kvalitní kód a kdo tvrdí opak ten se plete. Ne všechno je super, ne všechno je černobíle správně a špatně a nikdo tě nenutí používat classy, je v pořádku používat factory funkce a composition over inheritance. Odsoudit ale s takovýmto přístupem něco, co dalo smysl vývoji v js ve velkých týmech bez nutnosti si trhat vlasy, je špatně. Příště se nad tím zamysli, než někomu, kdo si tvoří názor podsuneš ten svůj.
Poznatek: nevadí mi co říkáš, ale s jakou sebejistotou to říkáš, mýlit se může kdokoliv, ale nikdo tě nenutí vyjadřovat se k něčemu co jsi plně nepochopil a nepřijal.
Vzkaz pro tazatele, na ITN toho o moderním jsku moc nepočteš, záměr se na anglické weby pokud možno jako sitepoint, mdn dokumentace, tutorialspoint, codeschool, přímo o změnách je skvělá appkniha na google play JavaScript ES6, to ti dá představu, jak to všechno ale použiješ? Budeš muset hledat věci jako:
Babel
Commonjs
Amd.js
Modules in js
Webpack
Browserify
Grunt
Eslint - na kontrolu syntaxe, výborná věc, dá js úplně nový rozměr
Jsx a react
Redux
Vzor flux
Tyhle tři jen pro představu o čem dnešní js frameworky jsou
Npm.js - balíčkovací systém
Github - studnice všeho dobrého
Lodash
Underscore
Protože funkcionální přístup jede
Angular2 - protože mám kamarada, který v to věří a opět pro představu o frameworcích
Nodejs - protože JavaScript na server prostě patří už jen že dvou důvodů, event riden je super a async také, a php si zaslouží ústup
Electron - protože jsku to sluší i na klientu
Pozitron - protože i Mozilla chce vlastní Electron
Phonegap, Cordoba, Ionic, React-native - protože js chce i na mobilní platformy
Nové skvělé věci uvnitř jazyka
Promise
Generátor
Arrow operátor
Rest a spread operátor
Gettery a settery
new.target
let a const
Destructuring
Object property shorthand
Symbols
Static method
A mnoho dalšího
Import a export
Class a extends
Skvělé věci v browseru
Worker api
Notification api
Localstorage api
Service
Websockets
Server sent events
Templates
Fetch api
A mnoho mnoho dalšího
Post je psán na telefonu, v případě překlepů, sorry.
Immutable.js - nutnost a zamyslet se nad významem a dopadem na kvalitu a testovatelnost kódu
Mocha
Sinon
To ohledně testování
A sérii knížek You don't know JavaScript - je na githubu, také sledovat blogy lidí, kteří v js něco znamenají a přijdou ti zajímaví,
Dobrá knížka je také Eloquent JavaScript opět v aj , oplatí se přečíst, obsahuje základy i detaily a je velmi kvalitně strukturovaná, umožní ti přeskakovat to, co už znáš.
A věci jako asm.js a webassemly
Neuškodí vědět něco o parsování JavaScriptu a kde to v praxi nejvíc
pálí
osobně sice souhlasim asi tak s 70% věcí a celkově nejsem takový JS fanboy jako ty, ale musím uznat, že jsi mu to sepsal pěkně.. a zároveň, ač si nechtěl, si ukázal ten neskutečný průser webového vývoje.. a sice, že:
Já zase souhlasím naprosto s tebou. Ale věřím, že časem se to ustálí, protože navzdory tomu, že js je tu už 21 let, v podstatě teprve teď začal vznikat, boom přijde a odejde, jazyk zůstane, jestli ho budou lidi používat netuším, nejsem vědma, možná že nakonec bude odpověď Elm, možná C++ nebo JAVA převedené do webasm... Kdo ví, tak jako tak, je super sledovat ten rachot, když se komunita zamiluje. Je to působivé neříkej, že to tak taky nevidíš .
Já to vnímám tak, že se z JS sice rozhodně né bezbolestně, ale postupně začíná stávat použitelná platforma pro vývoj..úmyslně tady mluvím o platformě.. Současně s JS ekosystémem se to týká i samotného .NET (.NET Core), kde taky všechno rozdělují na co nejmenší balíčky a jsou tam vesměs podobné problémy..
Jako úplně největší průšvih co teďka ohledně PL/JavaScriptu je, vnímám to, že tam přicházejí věci, které jsou jinde už 10let a lidé je umějí správně používat.., zatímco v JS jsou relativně novinkou a lidé nevědí ani jak to dělat správně... Jeden příklad za všechny..
V NPM, stejně jako jinde máš sémantické verzování balíčků, kde máš mj. možnost velmi dobře odlišit verze, které obsahují brraking changes a které NEOBSAHUJÍ breaking changes.. Pak samozřejmě bys měl dávat logicky do dependency jiné balíčky a omezit je, aby neobsahovaly breaking changes..
Jenže, když se koukneš do 80% balíčků tak tam nalezneš jednu ze dvou věcí:
Teď třeba nedávno jak jistě víš, došlo k hodně breaking changes u webpacku.. hlavně tedy se třeba config validuje oproti schematu a tam si řekli, že ho překopajjí (resolve,..) .. samozřejmě dalších 100 000 balíků má ve starter "balíku" nejnovější webpack,.takže stáhneš co má fungovat zkusíš to zbuidit a máš tam 10 000 erroru...
Opačný problém je ten, že zjistíš, že do JavaScriptu přišlo něco nového co je zdánlivě to samé jinde.. například import {} a reexporty v barelech.. (index.ts)..
Zatímco jinde je to vždycky bez problémů, protože "bundler" si to dokáže správně poskládat, tak jak Babel, webpack,..cokolliv.. má opravdu velké problémy s circular referencema..
//a
import neco from /index.ts
import b from /b
//c
import a from /index.ts
a pak ti to samozrejme posklada blbe bundle a koncis.. (snad jsem ten prikald dal dobre,., protoze se strasne jednoduse udela pruser automaticky, ale blbe se vymysli manualne.)
Dalším problémem je treba i to THIS a Lambda.. ono je sice fajn, že máš ()=>{} a to za tebe udělá samo _self (dělá to většinou jako _this).. jenže pak vývojář koukne do prohlížeče.. tam má .map soubory... pokud si to breakne a ukáže na this tak mu to ukazuje správně na objekt (protože se to ve skutečnosti namapuje na _this).. Pak si ael zadá do watche this a to mu ukazuje na Window.. tak si řekne WTF??? Ve finále tedy tato lambda vede často k tomu, že si říkáš pak "je to tedy this, nebo to je _this?"
Wow, takto dobrou odpověď jsem ani nečekal děkuji, myslím, že mi to dalo docela dobrý nadhled co mě čeká. A děkuji i ostatním co napsali komentáře.
Jinak chtěl jsem se ještě zeptat ohledně verzí na wiki. Po edici 6, je tam ještě 7, takže bych se zeptat proč si se nezmínil o ní? Nepřínáší moc nového, když vychází po roce? nebo ještě se nepoužívá?
https://hackernoon.com/…d3a717dd577f#…
Tady asi najdeš odpověď na to verzování....
JInak.. jeste co se tyce Angularu 2 Take jsem presvedceny, ze se dostane zase pred React ON je X let pred reactem.. problem je, ze dokud s nim nema clovek vetsi zkusenost a vetsi projekt, tak to moc nezjisti.. Predevsim to, jak je ve skutecnosti JSX strasne omezujici.
A stručné doplnění i sem do diskuze: ES7 ještě není hotová/ready.
I tohle beru tak nějak v potaz. Přece jenom, nic není dokonalý a nebude tu věčně.
Však jsem taky angular 2 zmínil speciálně se tvou referencí.
Díky za super článek, pobavil jsem se, vystrašil jsem se ... aspoň mám představu o nynejší situaci JS.
Takže ještě jednou díky všem
Jo a včera jsem se snažil nezapomenout ti ještě zmínit TypeScript jakožto typovaný superset JS případně jako zajímavost Flow.js od fb taky k typům.
Typescript +1
Zobrazeno 17 zpráv z 17.