Hallo Greta,
mich hat die selbe Fragestellung noch vor kurzem beschäftigt. Ich kann dir daher mal von meine bisherigen Schritten berichten.
Um erstmal die Grundlagen kennenzulernen und zu verinnerlichen habe ich auf einen Vokabeltrainer zurückgegriffen. Hierzu ausschlaggebend war der Bericht von Derek Sivers, der auch seinen Satz Lernkarten zu Javascript für das Programm Anki bereitstellt. Die Karte findet man am Ende der Seite.
Inhaltlich geht es um die Grundlegende Syntax und die zum Sprachumfang gehörenden Funktionen, BOM- und DOM-Manipulationen, sowie Dinge die zum Handwerkszeug dazugehören.
Der nächste Schritt war Nodejs um lokal und unabhängig von jeglichen Browsern üben zu können und die Dateien lokal verwalten zu können.
echo 'console.log("Hello World!");' > hello.js && node hello.js
Hello World!
Jetzt fehlte lediglich Übungsmaterial. Dabei bin ich auf codeeval.com fündig geworden.
Die meisten Aufgaben bestehen daraus einen Dateinamen entgegen zu nehmen, zeilenweises Einlesen und Bearbeiten der Aufgaben nach Vorgabe und anschließender Ausgabe des Ergebnisses auf StdOut.
FizzBuzz für verschiedene Zahlenkombinationen bis zu einer Obergrenze ist dann so eine Aufgabe. Den fertigen Code kann man dann einreichen und dann wird dieser getestet und man erhält Punkte die einen in einer Rangliste nach oben bringen. Das ist zum einen sehr motivierend um auch etwas länger zu üben damit man das ganze am Ende auch wirklich beherrscht.
Nach ein Paar Aufgaben habe ich mich dann daran gemacht ein minimales Testframework zu erstellen. Eine Javascriptdatei wird dabei auf Veränderungen überwacht. Bei Veränderungen wird die Datei ausgeführt und mit Testdaten gefüttert und mit dem gewünschten Ergebnis abgeglichen. Insgesamt habe ich um die 50 Aufgaben mit Javascript bearbeitet.
Was ich dabei gelernt habe ist der grundsätzliche Umgang mit Nodejs, wie man Standardbibliotheken einbindet, nutzt und entsprechende Dokumentation findet. Der effektive Umgang mit Listen, Objekten, Funktionen, Callbacks und Closuren sitzt jetzt ziemlich gut.
Der nächste Schritt sind dann die diversen Frameworks, die ich bewußt etwas auslasse, da hier mit sehr vielen Veränderungen zu rechnen ist. JQuery ist mit Sicherheit sehr wichtig und vereinfacht vieles. Bezüglich SPA gibt es den Platzhirsch Angular der allerdings mit der neuen Version die Rückwärtskompatibilität stark missen lässt. Emberjs fristet ein Nischendasein und Facebooks React setzt auf der Überholspur an.
Daneben gibt es noch diverse Ansätze mit Transpilern, Angefangen von GWT über Type,Coffee und Clojurescript. Und ausserdem ist auch noch Ecmascript 6 im Juni mit einigen Neuerungen herausgekommen.
Daher lasse ich es nachdem die Grundlagen da sind erstmal wieder ein wenig ruhen um zu schauen in welche Richtung sich das ganze entwickelt.