Sensowna nauka JS

1

Siedziałem do tej pory głównie w back-endzie. PHP, trochę Railsów ostatnio. Mam duże braki jeśli chodzi o JS. Sam język znam słabo, nie mówiąc o frameworkach.

Co byście polecali, żeby ogarnąć temat i złapać solidne podstawy? Najlepiej od razu jak najbardziej nowocześne podejście do kodzenia w JS, jakieś trendy obecne w programowaniu w JS itp bo wiadomo, że przez te ostatnie 10 lat ten język i technologie z nim związane przeszły dużą przemianę.

Jaki framework/bibliotekę wato ogarnąć na samym początku?

6

Mam duże braki jeśli chodzi o JS. Sam język znam słabo, nie mówiąc o frameworkach.
...
Jaki framework/bibliotekę wato ogarnąć na samym początku?

na początku to się nie ogarnia frameworków, tylko poznaje język.
najważniejsze w JS są funkcje.
Są różne funkcje, nawet coś takiego jest jak funkcje samowywoływujące się (tzw. IIFE - https://www.google.com/search?q=iife ), funkcje anonimowe. Funkcje użyte jako argument w innej funkcji itp. Podawania callbacka np. do iteracji po tablicach:

var podwojne = [1, 3, 16].map(function(wartosc) {
  return wartosc * 2;
});
console.log(podwojne); // [2, 6, 32]

Różnica między function declaration a function expression:
https://www.google.com/search?q=function+declaration+function+expression

Domknięcia (closures), czyli funkcje w funkcjach np:

function zewnetrzna() {
  return function wewnetrzna() {
  }
}
  • dalej warto poznać zasięg zmiennych. Jak zrobić zmienną lokalną funkcji, jak zmienną globalną, jak zrobić zmienną lokalną, która będzie pamiętała swój stan między kilkoma wywołania funkcji (podpowiedź: można użyć domknięcia).

  • kolejną ważną rzeczą są obiekty. A tu jest naprawdę porąbane trochę zagadnienie, bo obiekty w JS robi się na ileś różnych sposobów (w tym można wykorzystać funkcję jako konstruktor obiektu np. :

function Zwierze(ile_lap, pokarm) {
  this.lapy = ile_lap;
  this.pokarm = pokarm; 
}
var kot = new Zwierze(4, 'mleko');

a to tylko jeden ze sposobów. Można też tak:

var kot = {
  lapy: 4, 
  pokarm: 'mleko'
}

i to też nie wyczerpuje tematyki.

Plus to, że zamiast klas są prototypy i obiekty dziedziczą po prototypach:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Inheritance_and_the_prototype_chain
w nowej wersji JS mają być klasy, ale zanim to wejdzie to trochę wody upłynie...

I zmienna this niby jest, ale może być podmieniona dynamicznie, więc też psikus. Zmienna this to w JS całe osobne zagadnienie.

No i to są podstawy. A potem można jakieś jQuery opanowywać. A potem można zejść pod maskę i bawić się w brzydkie DOM API (dlatego między innymi jQuery jest tak popularną biblioteką, że zapewnia ładnego wrappera na DOM API).

Później można obczaić sobie framework Backbone, ponieważ jest to ładny prosty framework MV*, którego kod źródłowy też można sobie podejrzeć i coś tam zrozumieć (nie brałbym się za Angulara na początek). Biblioteka Underscore do kompletu też może być, ponieważ ułatwia operacje na tablicach i obiektach.

warto się też zaznajomić z Dev Toolsami w Google Chrome (F12, Ctrl+Shift+J) albo innym podobnym narzędziem do debugowania.

0

@LukeJL Dzięki za takiego rozbudowanego posta. Teraz wiem chociaż z jakiej strony ugryźć temat.

A polecałbyś jakie konkretne materiały tutoriale/książki do nauki samego języka? Tak, żeby mieć solidny fundament.

0

http://helion.pl/ksiazki/javascript-mocne-strony-douglas-crockford,jscmoc.htm <- bardzo dobra książka, dosyć ciężka
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide <- jeden z lepszych tutków (kolega wyżej już podał :P)

0

Czy w przypadku Javascriptu lepiej jest tworzyć obiekty poprzez domknięcia czy poprzez funkcję konstruktora?

Mnie domknięcia bardzo przypominają generatory z pythona lub sposób programowania z Clojure opierający się na przetwarzaniu sekwencji. Sęk w tym, że generatory są fajne jeśli trzeba przetwarzać dużą bądź nieskończoną ilość danych :D Odnoszę wrażenie, że takie ilości danych to można napotkać pisząc w nodejs. Jeśli danych nie ma dużo, to budowanie zestawu domknięć przetwarzających dane w leniwy sposób jest raczej zaciemnianiem kodu.

Co wy o tym sądzicie?

1 użytkowników online, w tym zalogowanych: 0, gości: 1