Aika laaja alue tässä käsittelyssä. Perusteista on kuitenkin paras aloittaa jos on nyt pyrkimässä alalle. Netti on täynnä hyviä (ja toki huonoja) resursseja, näistä voisi mainita Udacityn tietyt kurssit (Googlen), Codeschool jne... Tärkeämpää kuin tietty osaaminen tietyn frameworkin ympärillä on kasvattaa ymmärrystä siitä, että miksi asiat on tehty miten ne on tehty. Tähän vaaditaan se, että pohjalla on tuntemusta ihan JavaScriptistä, DOMista ja siitä miten selaimet toimivat (parsing, render, paint jne...). jQueryn ohi on ehkä aika osittain ajanut, kun samoja DOM manipulaatiota voidaan suorittaa paremminkin. Nykyään tarve jQueryn valtille, eli yksi API kaikille selaimille, on vähenemään päin. Jos JavaScript ymmärrystä on, jQuery on vain yksi, tosin isohko, kirjasto siihen kylkeen.
Itse olen työkseni tehnyt näitä hommia viimeaikoina enimmäkseen React+ Redux + ES6/TypeScript kombolla. AngularJS on tullut myös käytettyä vuosia sitten, mutta myös jQueryä. Angular olen myös käyttänyt ihan tuotannossa (eli "angular 2" monelle, vaikka tuo 2 on vain versionumero). Itse teen myös hieman hommia rajapintojen parissa, joten backend devauksestakin on kokemusta. Aika laaja-alaista osaamista pitää olla, ymmärtää eri päätelaitteet ja eri käytettävyysasioita sekä saavutettavuuspuoli. Backend devailussa tuo on taas eri suuntaista, mm. integraatioiden suuntaan jne...
Tällä hetkellä oma mielenkiinto on enemmän funktionaalisessa suunnassa. Elm kieli on tullut tutummaksi, ja aina vakiona kaikessa mukana ramda. inferno vaikuttaa myös hyvältä kirjastolta, ja siihen kun ottaa kirjastoja sopivasti niin pääsee aika hyvällä mallille (mm. ramda). Itse en allekirjoita Angular "2" monimutkaisuutta, React + React Router/Router5/... + Redux/Mobx on vähintään yhtä mutkikas alkuun. Noiden yhteen naittaminen myös vaatii enemmän tuntemusta. Angular tekee myös taustalla erittäin hienostuneita asioita, joiden itse toteuttaminen veisi aikaa. Eli valitse tarpeen mukaan. Angular on myös suosittu, tämä vuosi on käännevuosi siinä että sitä myös otetaan laajemmin käyttöön. Google myös käyttää sitä sisäisesti ja ulkoisesti, toisinkuin aiemmin täällä virheellisesti sanottiin. Ensimmäiset Angular projektit tulivat Googlelta jo kun Angular oli betassa mm. Google Fiber -sivusto.
Mitä siis itse suosittelen:
- JavaScript ES6 / ES2015 osaamista
- Eri JavaScript ohjelmointimallit pintapuolisesti
- Testaaminen, tämä muutti omaa ajattelu tapaa => ratkaisut ovat parempia kun ne ovat helposti testattavia
- HTML, CSS taitto
- CSS paradigmat
- Selain (DOM, paint, render jne...) ei niinkään eri selainten erot (koska tämä puoli kaventuu eniten ja nopeiten) - perusperiaatteet pysyvät
- Joku kirjasto, yrittää ymmärtää miksi näin on tehty? Esim. inferno/preact/react
- ...
Listaa voisi jatkaa loputtomiin. Alkuun pääsee helposti, mutta JavaScript on kielenä yksi mutkikkaimmista erilaisten poikkeusten ja erikoisuuksien takia. Ylläpidettävyys on yksi tärkeä tekijä myös oikeissa projekteissa, mistä asiakas maksaa rahaa. Myöskään projekteissa ei voi sooloilla. Itse mieluusti käyttäisin Elmiä, mutta realiteetti on se että ei sitä yksin sanella. Tiimin päätös.