T3 Campus T3 Campus

So würde ich als TYPO3 Entwickler bei Null starten

Ich bin TYPO3 Entwickler seit über 10 Jahren, habe mir vieles selbst beigebracht. Wenn ich heute bei null starten müsste, dann würde ich so anfangen.

Die Webentwicklung entwickelt sich seit mehreren Jahren rasant weiter. Es kommen ständig neue Technologien dazu und man hat wirklich Schwierigkeiten als Webentwickler am Ball zu bleiben.

Auch in PHP hat sich die Entwicklungsgeschwindigkeit in den letzten Jahren deutlich erhöht. Während PHP 4 und 5.6 gefühlt ewig aktuell waren, wurden die Nachfolger-Versionen relativ schnell abgelöst.

Diese Entwicklungsboost geht auch durch das TYPO3 CMS. Während auch hier TYPO3 4.5 eine sehr lange Zeit die höchste Version war, wird eigentlich seit TYPO3 8 jede 2 Jahre neue Major - Releases veröffentlicht. Und hier tut sich wirklich viel.

Immer mehr Symfony Komponenten werden integriert und State of the Art Technologien aus dem Web und PHP werden integriert.

Wer sich nicht in Vollzeit + Freizeit mit der Thematik beschäftigt, wird eines Tages abgehängt sein. Dabei darf man keine Scheu vor neuen Technologien haben. Denn da kommen ständig neue dazu.

Wie soll man als kompletter Neuling hier den Anschluss finden?

Natürlich hilft eine Ausbildung als PHP Programmierer oder ein Informatik-Studium. Aber diese Dinge brauchen Zeit und kommt natürlich nicht mehr für jeden infrage.

Glücklicherweise ist die Bildungsnische in den letzten 10 Jahren ebenfalls rapide gewachsen. Noch nie gab es so viel Auswahl an kostenfreien Tutorials auf YouTube oder bezahlbaren Onlinekursen zu allen möglichen Themen, wie heute.

Das kannst du dir zur Nutze machen, so wie ich das auch heute noch tue, um mich kontinuierlich fortzubilden.

Wenn du von Web und PHP noch keine Ahnung hast, also ein kompletter Neuling bist. Dann würde ich an deiner Stelle wie folgt starten.

Welche Fähigkeiten braucht ein TYPO3 Entwickler?

TYPO3 Entwickler am Arbeitsplatz

Die Anforderungen sind mittlerweile sehr hoch. Das gilt jedoch nicht nur für TYPO3 Entwickler, sondern für Webentwickler im Allgemeinen. Die entsprechenden Gründe habe ich bereits oben erläutert.

Wenn du bei null startest, dann brauchen wir eine Basis, auf die wir aufbauen können. Diese Basis besteht aus einem aus das Verständnis für das Internet und deren Bestandteile und zum anderen Teil aus Softwaretechnik..

Für keiner dieser Punkte musst du bereits eine Programmiersprache beherrschen. Die sind sozusagen Theoriewissen, die man jedoch unbedingt braucht. 

Die Liste ist nicht vollständig, sondern benennt nur das wichtigste für einen TYPO3 Entwickler.

Internet und Internet-Technologien

  1. Was ist das Internet und wie ist es aufgebaut?
    1. Zustandsloses Protokoll
    2. Welche Protokolle gibt es?
    3. Was ist ein Domain Name Registrar?
    4. DNS / Nameserver
      1. A, TXT, CName - Records
      2. PTR
      3. SPF und DKIM
    5. Was ist ein SSL Zertifikat und wie wird es installiert?
    6. Was ist SSH?
      1. Was sind Private und Public Keys?

Softwaretechnik

  1. Programmiersprache
    1. Wie ist eine Programmiersprache aufgebaut und welche Tools hat man dort?
      1. Variablen, Konstanten, Objekte, Bedingungen, Schleifen.
  2. Entwurfsmuster
    1. MVC
    2. Singleton
    3. Erbauer (Builder Pattern)
    4. Fabrikmethode (Factory Pattern)
    5. Testing
      1. Unit Tests
      2. CI/CD Pipeline
  3. Objekt Orientierung
    1. Vererbung
    2. abstrakte Klassen
    3. Interfaces
    4. Injections
  4. Datenbanksysteme
    1. MySQL / MariaDB
    2. Wie erstellt man CRUD - Abfragen (Create, Read, Update, Delete)
    3. INNER JOINS
    4. LEFT/RIGHT JOINS
    5. Subselect
    6. MySQL Optimierung
      1. EXPLAIN
  5. Was ist eine API oder REST Schnittstelle?

Skript-, Programmiersprachen und andere Sprachen

  • PHP 7 und 8
  • JavaScript ES6
  • jQuery
  • Vue.js / React für später sinnvoll. Musst du aber nicht am Anfang lernen
  • XML
    • Allgemein und RSS Feeds
  • JSON
  • MySQL

Internet und Internet-Technologien

Internet Illustratio

Als Webentwickler braucht, man Befundes Wissen darüber, was das Internet ist und vor allen wie es funktioniert.

Du musst jetzt nicht die Geschichte des Internets auswendig lernen. Aber du solltest wissen, welche Protokolle es im Internet gibt und wie die Server - Client - Kommunikation abläuft. 
Die Eigenschaften des Protokolls hat nämlich direkten Einfluss auf die Webentwicklung.

Falls du, dem englischen mächtig bist, dann kann ich dir diesen kostenpflichtigen Udemykurs empfehlen. Ansonsten verweise ich dich auf die untere verlinkte YouTube Playlist.

DNS

Darüber hinaus musst du wissen, wie die Domains vergeben, beantragt und aufgelöst werden. Dazu gehört ein Verständnis über Nameserver, Toplevel - Domains und die bekanntesten DNS Einträgen. 

Der Nameserver ist ein zentraler Bestandteil des Internets, wie du es kennst. Dass man eine Webseite über einen (Domain-) Namen erreichen kann, ist nicht selbstverständlich und Bedarf eines Systems.
In diesem Zusammenhang solltest du sicher mit dem Umgang von A -, TXT - und MX - Records sein. Du solltest DNS Einträge setzen können für die Domain selber (@) und einfache A, TXT und MX Records.

Die Unterschiede zwischen Domain, Nameserver und DNS Zone solltest du auch kennen. 

Du kannst beispielsweise eine Domain bei einem Registrat haben und die DNS Zone auf einem anderen. Das geht mittels Nameserver Eintragung. Dort muss nicht der lokale stehen, sondern jeder beliebige im Internet erreichbare Nameserver.
Auf dieser Weise kann man gut und sicher Domains mit vielen DNS Einträgen umziehen. Man erstellt die DNS Zone bei dem Ziel Registrant und wechselt danach die Nameserver. Ab diesen Zeitpunkt wird bereits die DNS Auflösung auf den Zielregistrant durchgeführt.
Der Domainumzug kann dann ohne Downtime gemacht werden.

In der unten erwähnten Playlist wirst du über entsprechende Tutorials fündig.

DNS Einträge kannst du sehr gut mit der Webseite: MxToolbox prüfen.

SSL

Da du als Webentwickler immer wieder mit SSL - Zertifikate in Berührung kommen wirst, solltest du dich auch hier fortbilden. Du solltest wissen, was ein SSL Zertifikat ist und wieso man es einsetzt. Ebenfalls wichtig ist zu wissen, wie SSL Zertifikate bestellt und eingerichtet werden, Es ist auch nicht unüblich, dass du SSL Zertifikate umziehen oder importieren musst. 

Beachte auch, dass Browser Restriktionen haben, dass man beispielsweise nicht beliebig http und https Anfragen in einer HTML Dokument mischen kann. Wenn die Webseite auf ein SSL Zertifikat läuft, gibt es Warnungen oder gar Blockaden seitens der Browser, wenn man eine Resource per http lädt.

Deshalb ist es wichtig, sich hier rechtzeitig darauf vorzubereiten. Hier kann ich dir diesen Udemykurs empfehlen oder die untere YouTube Playlist.

Mailserver

Als Webentwickler ist der Mailversand ein gewisser Standard. Der Mailversand ist auch schnell implementiert. Jedoch gibt es beim Mailversand viele Hürden und Raum für Probleme. E-Mails werden nicht richtig verschickt, kommen nicht an oder landen ständig im Spam.

In TYPO3 ist es so, dasss man nicht mehr per sendmail verschicken sollte, weil sendmail Probleme mit BCC hat. Der SMTP Versand ist zwar empfohlen, aber manche Mailserver haben Versandgrenzen. Das kann problematisch sein, wenn man Newsletter über eigene Tools oder Windowsprogramme per SMTP verschicken möchte.

Du als TYPO3 Entwickler solltest zumindest die allgemein empfohlenen Einstellungen und Vorkehrungen kennne, wie man sicherstellen kann, dass E-Mails ankommen - zumindest die meisten.

In diesem Zusammenhang solltest du dich beschäftigen mit dem Thema, wie man einen SPF Eintrag erstellt und was dort alles möglich ist und was es zu beachten gibt. Ich empfehle dir auch dich über DKIM schlau zu machen. DKIM ist eine weitere Möglichkeit zu gewährleisten, dass E-Mails beim Kunden ankommen. Die Einrichtung ist bei vielen Hosting-Anbieter oder Newsletter Tools auch nicht kompliziert. Jedoch musst du dir im Klaren sein, dass eine fehlerhafte Konfiguration dazu führt, dass E-Mails gar nicht zugestellt werden bzw. ankommen.

Das Thema Mail ist sehr wichtig und versuche dich hier stets weiterzubilden, sodass du möglichst viel Wissen darüber hast, um sicherzustellen, dass E-Mails korrekt verschickt werden. Das heißt, die höchste Chance haben, beim Kunden im Posteingang anzukommen.

Hilfestellung bei der Erstellung und Überprüfung von SPF Einträgen erhältst du auf dieser Webseite. Und mit diesem kostenfreien Onlinetool kannst du deine E-Mails auf Spam testen.

Weitere Ressourcen für die Erlernung der Grundtechniken des Internets findest du auf meine zusammengestellte YouTube Playlist.

Softwaretechnik

Softwaretechnik Schlagwort Wolke

Die Softwaretechnik ist ein großes Thema im Informatik-Studium. Dieses Fach hat mir am meisten auf meinem Weg als TYPO3 Entwickler geholfen.

Durch die Kenntnisse der Themen, die in der Softwaretechnik vermittelt werden, kann ich jede Programmiersprache mir aneignen und gut Kundenanforderungen in Systeme verwandeln (Abstrahierung), die der Computer versteht.

Ich kann dir nur sehr empfehlen, dich über die Themen in der Softwaretechnik vertraut zu machen. Insbesondere wenn du Quereinsteiger bist, das wird deine Ausbildung als TYPO3- oder Webentwickler deutlich beschleunigen und vereinfachen. Gleichzeitig hebst du dich von sehr vielen anderen Quereinsteiger ab. Denn die meisten fangen zu früh mit dem praktischen Teil an und betreiben ausschließlich Learning by Doing.

Deshalb empfehle ich dir, dass du dich damit sehr früh beschäftigst. Und bevor du deine erste Programmiersprache erlernst, ist es sinnvoll dich zu informieren, was eine Programmiersprache leisten kann und welche Tools sie hat.

Jede Programmiersprache besteht aus gewissen Werkzeugen:

  • Variablen
  • Konstanten
  • Bedingungen
  • Schleifen
  • Klassen
  • Funktionen / Methoden (wo ist der Unterschied?)

Damit ist mehr oder weniger jeder Algorithmus aufgebaut.

Beispielsweise sollte dir klar sein, das mit der Deklaration einer Variable Speicherplatz allokiert wird. Und die sollte auch der Gültigkeitsbereich von lokalen und globalen Variablen bewusst sein. Das ist besonders bei JavaScript wichtig.

Wenn du das Grundkonzept einer Programmiersprache verstanden hast, dann musst du beim Erlernen einer neuen Programmiersprache nur noch die Syntax lernen.

Die eigentliche Kunst ist dann zu wissen welches Framework oder welcher Teil einer API man für welche Situation nutzt. So gestaltet sich zumindest mein Alltag als TYPO3 Entwickler seit vielen Jahren.

Lerne diese Grundwerkzeuge zu meistern, schreibe deine ersten Algorithmen mit Pseudocode. Natürlich kannst du das auch gleich mit PHP kombinieren, aber dafür müsstest du erstmal wissen, wie man einen Webserver aufsetzt. Pseudocode kannst du sofort auf einen Blatt schreiben.

Die Entwurfsmuster haben in der Informatik einen sehr hohen Stellungswert. Die Entwurfsmuster musst du in TYPO3 nicht implementieren, sondern nur benutzen lernen. Diese werden, wie in jedem professionellen Framework, an entsprechenden Stellen genutzt. Teilweise auch ohne das man es sich selbst darüber bewusst ist.

Das wichtigste Entwurfsmuster was du definitiv verstehen und anwenden können musst, ist das Model-View-Controller (MVC) Muster. Dieses Muster wird von jeder Anwendungs genutzt die eine grafische Oberfläche hat.

Das MVC zerlegt eine Anwendung in 3 Hauptteile und definiert die Kommunikation zwischen diesen Teilen. Vereinfacht ausgedrückt, ist das Model die Datenbankrepräsentation, die View im unserem Fall die Webseite die im Frontend sichtbar ist und der Controller ist das Bindeglied. Der Controller delegiert alle notwendigen Prozesse die für die Beschaffung der angefragten Informationen  notwendig sind.

Der Controller sollte hier stets das Slim-Controller Prinzip beherzigen. Das bedeutet, dass der Controller so schlank, wie möglich sein. Also, so wenig Code wie möglich haben sollte und so wenig Abhängigkeiten mit View oder Model. Es sollte daher eher dass Model mit mehr Funktionalitäten ausgestattet werden. Natürlich nur was Model relevant ist. 

Dadurch ist der Controller Teil leichter austauschbar. Die Methoden des Controllers sollten auch so schlank wie möglich sein und möglichst wenig Aufgaben übernehmen, am besten nur eine. Hier sollte dann lieber auf viele kleine Funktionen Wert gelegt werden, also auf wenige umfangreiche Funktionen.

Es gibt einen sehr guten Udemykurs zur Entwurfsmuster und für einen Kurs um deinen Weg zum Softwareentwickler zu beschleunigen. Gerne verweise ich dich auf meine YouTube Playlist zum Thema Softwaretechnik.

Objektorientierung

Unified Modeling Language Beispiel

Die Objektorientierte Programmierung (OOP) ist längst der Standard in allen High Level Programmiersprachen. PHP war im Vergleich zu C++,C# oder Java lange im Nachteil. Glücklicherweise hat PHP die Lücken schließen können und ist spätestens seit Version 7 eine gute objektorientierte Programmiersprache geworden.

Das bedeutet jedoch nicht, das jedes CMS automatisch lückenlos objektorientiert ist. WordPress zum Beispiel hat immer noch einen sehr starken prozeduralen Anteil.

Objektorientiert programmieren heisst programmieren mit Klassen, Abstrakte Klassen, Interfaces und Traits.

Es ist natürlich ein weites Feld. Vielleicht lässt es sich am einfachsten erklären, wenn man das Programmierungen vor der Objektorientierung anschaut. Dort hat man prozedural programmiert.

Ein Programm bestand damals aus einer Menge von Funktionen. Da ein Programm sehr leicht aus tausende Funktionen bestehen kann, wurde diese in Ordner strukturiert. Ein großer Nachteil des prozeduralen Ansatzes ist es, dass die Funktionsnamen eindeutig sein müssen. Hier musste also eine strickte Namenskonvention eingehalten werden. Oft wurden auch mehrere Funktionen in einer Datei definiert. Das machte es zusätzlich schwierig den Überblick zu behalten.

Der prozedurale Anteil macht es auch unmöglich die Objekte als solche zu behandeln. So waren alle Funktionen für einen Benutzer in der Datei: benutzer.php oder schlimmer, verteilt auch viele Dateien, da sie wiederverwendet wurden. Wenn man aber nun einen speziellen Benutzer hat, der alles kann was ein normaler Benutzer kann plus Extra, wie sollte man das ablegen? Im Prinzip war alles eine Serie von Funktionsaufrufe.

Die Objektorientierung ermöglicht es Klassen zu definieren. Jede Klasse hat eine defnierte Aufgabe. Zum Beispiel gibt es eine Klasse: Person. Die hat alle Attribute und Funktionen einer Person. Jetzt muss nur noch der Klassenname eindeutig sein. Die Funktionsnamen müssen jetzt nur noch in dieser Klasse eindeutig sein. Man kann die selben Funktionsnamen, aber auch in anderen Klassen verwenden.

Zusätzlich kann man eine neue Klasse erstellen und von der Klasse: Person erben. Damit hat die neue Klasse autom. alle Attribute und Funktionen der Klasse Person.

Es gibt noch zahlreich mehr Vorteile. Im Prinzip hilft der Objektorientierter Ansatz dabei, die Welt die wir verursachen im Computer darzustellen, an unserer Welt anzugleichen. Der Mensch denkt auch in Objekten und nicht in einer Serie aus Funktionen.

Das Thema Objektorientierung wird in diesem  YouTube Video nochmal gut für Einsteiger erklärt.

Datenbanksysteme

Frau arbeitet an einer Datenbank

Datenbanken ist ein weiteres komplexes Thema indem man auch nie genug lernen kann.

Das wichtigste ist erstmal das du grundsätzlich verstehst, wie ein Datenbanksystem funktioniert. Hier solltest du dir in jedem Fall die relationalen Datenbanksystemen, wie MySQL anschauen. Datenbanksysteme wie MongoDB sind eher die Ausnahme und in TYPO3 gar nicht möglich.

Eine zentrale Rolle sind die die Primär- und Sekundärschlüssel mit denen man Datenbanktabellen in Beziehung stellen kann. Hier gibt es verschiedene Kardinalitäten:

  • 1:1
  • 1:n
  • n:1
  • m:n (oder many to many)

Das einfachste ist die 1:1 Beziehung. Das besagt, dass zwischen 2 Datenbanktabellen es immer nur eine Beziehung stehen kann. Zum Beispiel besteht ein Auto nur aus einem Lenkrad. 1:n und n:1 definiert, dass es auf einer Seite mehrere Einträge geben kann.

Zum Beispiel kann ein Automodell mehrfach produziert werden, aber alle diese Automodelle gehören zur gleichen Marke (Unternehmen). Oder anderes gesprochen, ein Unternehmen kann mehrere Autos produzieren, aber eines dieser Autos gehört nur einem Unternehmen.

Die many-to-many Beziehung ist die komplexeste und definiert, dass eine Seite Relationen zu mehrere Einträge auf der anderen Seite haben kann und umgekehrt. Ein praktisches Beispiel wäre, das ein TYPO3 Inhaltselement ein oder mehrere Bilder haben kann. Diese Bilder können dann einem, aber auch mehreren Inhaltselementen zugewiesen werden.

Die Kardinalität hat dann auch Auswirkungen auf das Datenbankmodell. Zum Beispiel benötigt man für eine many-to-many Beziehung eine Beziehungstabelle.

Ich empfehle dir diesen Udemy Onlinekurs. Hier lernst du das nötigste in nur 2 Stunden. Falls es kostenfrei sein soll, dann schaue dir als Anfänger diese YouTube Playlist an.

APIs und REST

APIs und Schnittstellen sind ein großes Thema im Internet. Sie ermöglichen eine sicherer Kommunikation zwischen entfernten Systemen.

Als Webentwickler und auch als TYPO3 Entwickler ist es nur eine Frage der Zeit, bis du dich damit beschäftigen musst. Sei es zur Anbindung von PayPal, Digistore oder anderen Bezahldiensten, aber auch CRM Systeme, Newsletterdienste oder Social Media Entwicklungen haben solche Schnittstellen.

Mach dich mit der Authentifieriungsprozess und der Endpoint Kommunikation vertraut.

Dieses Thema ist sicherlich das Thema Nummer 1 als Anfänger. Aber es ist etwas was du in jedem Fall dir anschauen solltest.

Ich denke es reicht aus, wenn du dir einen Anbieter raussuchst du die dort gezielt die REST Schnittstelle anschaust. 

Schaue dir einmal dieses YouTube Video dazu an.

Skript-, Programmiersprachen und andere Sprachen

Programmiersprachen Illustration

Die wichtigste Programmiersprache für dich als angehender TYPO3 Entwickler ist PHP. Denn TYPO3 ist ein Open Source CMS, dass in PHP geschrieben ist.

Da TYPO3 ein sehr modernes Framework ist, wird hier auch die neuesten Techniken von PHP und moderne Webstandards, wie PSR, genutzt.

Wenn du für TYPO3 Erweiterungen programmieren möchtest, dann brauchst du einen sicheren Umgang mit der Objektorientierten Programmierung. Folgende Bestandteile sind ein absolutes Minimum, die du beherrschen solltest bevor beginnst eine TYPO3 Erweiterung zu programmieren:

  • Vererbung
  • Injections
  • Namespaces

PHP

Du findest sicherlich hunderte von Tutorials auf YouTube zum Thema PHP. Der Nachteil bei solchen freien Tutorials ist, dass man hier keine Struktur hat und sich nur portionsweise fortbilden kann.

Deshalb empfehle ich dir einmal einen Onlinekurs zu PHP zu besuchen. Damit erlernst du viel schneller das Wissen bzw. ein sehr gutes Startwissen.  Auf dieser Weise wirst du schneller PHP Anwendungen schreiben können und dich viel leichter über kostenfreie Tutorials fortbilden können.

Nutze die Change und besuche den PHP Komplettkurs auf Udemy für einen sehr guten Preis.

Alernativ empfehle ich dir für den Start folgende Quellen:

JavaScript

Die zweitwichtigste Sprache ist JavaScript. Das gilt nicht nur für TYPO3, sondern für jedes CMS und PHP Webframework. JavaScript ist allgegenwärtig.

Seit ein paar Jahren geht wieder der Trend zu Vanilla JavaScript. Dass heisst JavaScript in der urprünglichen Form zu schreiben ohne Frameworks. 

Der Grund ist, weil die meisten Browser nun endlich einen konsent gefunden haben und sich ähnlich verhalten. Das ist auch nicht verwunderlich, weil die meisten Browser nun Chromium nutzen Das ist die Basis von Google Chrome.

Meine Empehlung ist es deshalb dich mit ES6 und ES2022 zu beschäftigen. Das ist der neueste JavaScript Standard. Darauf basieren mittlerweile alle modernen JavaScript Frameworks.

Auch hier gibt es natürlich einige kostenfreie Onlinetutorials, wie

Wie auch schon bei PHP, finde ich es auch hier besser, man besucht einen gut strukturierten Onlinekurs. Damit kommt man viel schneller ans Ziel und kann direkt von einem erfahrenen Programmierer lernen. 

Meine Empfehlung für JavaScript und ES6 ist dieser Onlinekurs.

In Sachen JavaScript Bibliotheken solltest du im Bezug auf TYPO3 jQuery erlernen. An dieser Stelle verweise ich gerne auf die T3 Campus jQuery Playlist für Anfänger.

Ich bin mir nicht sicher, wie lange TYPO3 noch auf jQuery setzt. Deswegen möchte ich an dieser Stelle keinen kostenpflichtigen Kurs empfehlen. Es gibt ohnehin genug kostenfreie Tutorials. Auch auf learn.jquery.org finden sich gute Anleitungen auf Englisch.

Wenn du umfangreiche Backendmodule schreiben möchtest, dann solltest du dir auch RequireJS anschauen. 

Die TYPO3 Backendmodule sind alle RequireJS Module. Das bedeutet das auch jede erweiterte Funktionalität im Backend die JavaScript benötigt ein RequireJS Modul sein muss.

In RequireJS schreibt man normales JavaScript. Es benötigt, ähnlich wie jQuery Plugins, eine gewisse Syntax um ein Modul als RequireJS zu definieren. Alle Abhängigkeiten muss man im vorhinhein im Modul anmelden. Wenn du beispielsweise jQuery benötigst, dann musst du das ungefähr so bei deinem Modul registrieren:

requirejs(["jquery"], function($) {
  // hier kommt dein JavaScript Code
  // $ ist dein jQuery Objekt
});

Vue.js

Vue.js ist ein sehr spannendes JavaScript Framework. Es vereint die Vorteile von Angular und React.

Mit Vue.js kann man komplexe JavaScript Anwendungen schreiben die man so mit Bibliotheken wie jQuery nicht machen könnte. jQuery kapselt eine Funktionalität in ein Plugin. Wenn man mehrere Funktionen braucht, dann braucht man mehrere Plugins.

Mit Vue.js kann man aus einer Webseite eine oder mehrere Programme (heissen in Vue: Components) machen. Es lassen sich Models an HTML Elemente, wie Formularfelder, knüpfen und automatisch aktualisieren. D.h. sobald sich der Wert der gekoppelten JavaScript Variable ändert, änder sich autom. die Anzeige im Frontend. Das macht Vue automatisch, während man bei jQuery oder Vanilla JavaScript zu Fuß machen müsste.

Das geniale bei Vue ist, dass man nur das clientseitige JavaScript hat und keine serverseitigen Teil wie bei React. Damit kann man Vue.js in jedem PHP basierten CMS oder Anwendung nutzen und auch so einbinden wie jQuery.

Das Framework Vue.js eignet sich sehr gut für Single Page Anwendungen, d.h. Anwendungen die aus nur einer HTML Seite bestehen oder einzelne interaktive Komponten auf einer Webseite. Praktische Beispiele sind Dashboard Anwendungen, Kanbandarstellungen wo in Echtzeit sich Visualisiertugnen ändern, Konfiguratoren wo nach Eingabe von Formularfelder sich autom. Dinge anders darstellen sollen usw.

Da Vue.js sehr komplex ist, finde ich die kostenfreien Tutorials auf der offiziellen Webseite nicht gut geeignet um Vue zu lernen. Man kann erahnen was Vue kann und wie man es ungefährt schreibt. Aber aufgrund der Komplexität, finde ich, sollte man hier einen kostenpflichtigen Onlinekurs machen. Ich habe selbst diesen Kurs (Vue - The Complete Guide incl. Router & Composition API) auf Udemy gemacht. Er ist absolut hervorragend und vollständig. Nach diesem Kurs wirst du Vue zu 100% beherrschen und alle Funktionen die Vue hat kennen und praktisch geübt haben. Der Kurs ist sehr leicht zu befolgen, wenn du dich schon gut mit JavaScript Vanilla auskennst. Der einzige Nachteil bei dem Kurs ist, dass der Dozent zwar deutschprachig ist, aber den Kurs auf Englisch hält. Das heisst du solltest der englischen Sprache mächtig sein.

XML

Das textbasierte Format XML kennst du bereits. Das heutige HTML ist xHTML was für XML und HTML steht. Darüberhinaus basiert HTML auf XML.

Jedes XML Format hat sein eigenes Vokabular. Das Vokabular von HTML sind seine HTML Tags. Die Regeln dieses Vokabulars sind die Schreibweisen und Verschachtelungsregeln dieser HTML Tags und die zugelassenen Attribute.

So ist jedes XML Dokument aufgebaut. Es definiert sein Vokabular mit seinen Regeln. In XML spricht man jedoch nicht von einem Vokabular mit Regeln, sondern von Dokumenttyp-Definitionen bzw. Document Type Definitions (DTD).

Ich denke nicht, das man dafür einen Onlinekurs besuchen muss. Das ist nur dann sinnvoll, wenn du XPath oder XSLT brauchst oder machen willst. Ansonsten wirst du im Web nur RSS Feeds als bekanntes XML Format begegnen und eventuell XML Formate als Exporte von bestimmten Programmieren. Wenn das der Fall ist, dann musst du dich mit deren DTD's auseinandersetzen und ich kann dir hier keinen allgemeingültiges Tutorial anbieten.

An dieser Stelle reicht es aus, wenn du HTML, RSS als XML Formate kennst. Das RSS XML Format ist sehr leicht verständlich mit einem sehr kleinen Vokabular. Meiner Meinung nach reicht es hier aus, wenn du dir dieses Tutorial durchliest. Für HTML empfehle ich dir selfhtml.

JSON

JSON ist ebenfalls ein textbasiertes Format und ermöglicht es JavaScript Objekte in einem Textformat abzubilden. Das wird an vielen Orten benötigt. Zum Beispiel in Verbindung mit Client-Server Kommunikation. Die Antwort auf einer Anfrage kann sehr leicht komplexer sein, als nur eine einzeilige Textnachricht. Wenn du die Daten eines Benutzer per AJAX anfragst, dann reicht es dir nicht aus, wenn du nur den Benutzernamen zurückbekommst. Und es wäre sehr unperformant, wenn man für jede Information ein separaten Request machen müsse.

Deswegen packt man Informationen in Objekte, schickt sie als JSON Format an den Client, dieser konvertiert JSON wieder in JavaScript Objekt(e) und verarbeitet sie weiter.

JavaScript, PHP und auch die anderen Programmiersprachen haben alle standardisierte Funktionen um JSON Text in Objekte zu konvertieren und um einfache Objekte in ein JSON Text zu konvertieren.

Auch für dieses Format ist kein Onlinekurs notwendig. Im Prinzip habe ich bereits alles gesagt. Die Erlernung der reinen Syntax geht in weniger als einer Stunde. Lese dir einmal dieses kurze Tutorial durch oder schaue dir dieses YouTube Video auf Englisch an. Falls du lieber ein deutsches Video anschauen möchtest, dann schaue dir dieses Video an.

MySQL

Die Sprache SQL ist wieder eine komplexe Sprache. Bei dieser Sprache trennt sich die Spreu auch vom Weizen. Das bedeutet es kann hier deutliche Unterschiede geben zwischen Junior und Senior SQL Nutzer. Vor allem wenn es darum geht performante SQL - Anweisungen zu schreiben, wird diese Sprache wirklich sehr komplex und schwierig.

Für uns als TYPO3 Entwickler oder angehende TYPO3 Entwickler spielt das absolute Highpolishing der Datenbankabfragen eine untergeordnete Rolle. Dennoch müssen wir darauf bedacht sein, die Abfragen so gut wie möglich formulieren zu können. Das geht aber nur mit viel Übung. Das gleiche gilt auch für PHP oder andere komplexe Sprachen.

In TYPO3 müssen wir zum Glück so gut wie nie SQL schreiben. Das Query Objekt der Repository oder der Querybuilder erledigen das für uns. Wir müssen nur sicherstellen, das unsere Datenbanktabellen geeignete Schlüssel haben. Das gilt im besonderen für unsere eigenen Models. Denn jedes eigene Model hat seine eigene Datenbanktabelle.

Dafür muss man allerdings MySQL Befehle können. Die Menge der Befehle ist übersichtlich und die wichtigsten davon sind:

  • SELECT, UPDATE, DELETE
  • FROM, WHERE, LIMIT, GROUP BY, ORDER BY
  • LEFT JOIN, INNER JOIN
  • EXPLAIN

Beschäftige dich erstmal mit einfachen SELECT - Befehle und teste diese in einer Testdatenbank. Einführend zu diesem Thema ist diese englischsprachige Seite sehr gut für den Anfang. 

PS: Da ich gerade bemerke, dass ich sehr oft englischsprachige Quellen verlinke. Falls du dem Englischen noch nicht mächtig bist, dann solltest du als allererstes einen Englisch Crashkurs machen. Denn ohne Englisch kommst du als Entwickler, egal in welcher Sprache, in der heutigen Zeit nicht mehr weit.

Wenn du das Gefühl hast, dich gut mit MySQL auszukennen, dann empfehle ich dir dieses Buch: High Performance MySQL

Damit bist du gut gerüstet. Ich denke zwar nicht, dass man unbedingt einen Onlinekurs dafür belegen muss, wenn du aber daran interessiert bist, dann empfehle ich dir diesen Onlinekurs auf Udemy.

Fazit

Du siehst die Anforderungen an einem modernen Webentwickler, sei es für TYPO3 oder andere CMS, sind mittlerweile sehr hoch. 

Es gibt in der Industrie natürlich viele schwarze Schafe, viele Hacker die irgendwas zusammenschustern und es billig verkaufen.

Ich hoffe dass dein Anspruch höher ist und du qualitativ hochwertigen Code schreiben möchtest, so wie ich. 

Ich bin auch nicht der beste Programmierer der Welt, der nur super sauberen und hochperformanten und fehlerfreien Code schreibt. Aber ich bemühe mich so nahe daran zu kommen, wie ich kann.

Ich weiss die Liste der Anforderungen sieht erst einmal beängistend lange aus. In der Tat wirst du mehrere Monate an Zeit brauchen, um alles zu verinnerlichen. Das ist auch der Grund warum viele Unternehmen Senior Entwickler suchen und warum Senior Entwickler wesentlich mehr verdienen als Juniorentwickler.

Lass dich nicht entmutigen und bilde dich kontinuerlich fort. Wer dran bleibt, der wird belohnt.