[RageMP/JS] Grundlagen - Dateistruktur

  • Hallo,
    in diesem Tutorial möchte ich euch zeigen wie ihr bei eurem RageMP Server den Überblick behält und eure Systeme in einzelne Module/Ordner unterteilt.


    Warum sollte ich diesem Tutorial überhaupt folgen?
    Wenn man einen RageMP Server machen möchte, wird man nicht daran vorbeikommen seine Systeme in verschiedene Dateien zu speichern, um nicht den Überblick über die Systeme zu verlieren, sollte man sich an eine gewisse Dateistruktur halten.
    Auch das arbeiten mit mehreren Entwicklern wird um einiges einfacher, wenn man sich an eine feste Dateistruktur hält und somit kein Wirr Warr aus Dateien entsteht.


    Welche Methoden gibt es nun also?
    Es gibt für die Dateistruktur eigentlich kein wirkliches Richtig und Falsch, man sollte es so machen, wie man selbst den Überblick behält, sollte sich aber an einige Normen halten, denn diese sind mit gutem Grund da, eben um eine klare Übersicht zu haben und sich nicht durch 20 Ordner klicken zu müssen, um das richtige zu finden.


    Ich werde hier mal als Beispiel zeigen, wie ich es mache, das kann man genauso machen wie ich, aber auch einfach als Inspiration verwenden und sich selbst so umändern, wie es einem am besten passt.
    Wir erstellen in unserem packages bzw. client_packages Ordner im Hauptverzeichnis des Servers erstmal für jede Kategorie einen eigenen Odner und eine index.js. In jeder dieser Kategorien kommt auch erneut eine index.js Datei.
    In diese Kategorien werden wir dann unsere Systeme unterbringen, welche genau hängt davon natürlich vom Server ab. Das sollte dann erstmal so aussehen:


    Also sehen wir erstmal einfach nur ganz viele index.js Dateien, diese müssen wir nun auch füllen.
    Wir fügen nun also im client_packages oder packages/main Ordner in die index.js alle unsere Kategorien ein, dafür verwenden wir require:

    Code: index.js (packages)
    1. require("./auth");
    2. require("./character");
    3. require("./database");
    4. require("./factions");
    5. require("./jobs");


    Dort müssen wir einfach nur den Pfad zu unseren Kategorien angeben, wir müssen die index.js nicht mit angeben, da Javascript automatisch die index.js lädt, wenn man nur einen Ordner angibt.
    Das müssen wir Clientside nun genauso machen:

    Code: index.js (client_packages)
    1. require("./auth");
    2. require("./character");
    3. require("./cef");
    4. require("./jobs");

    Wenn wir eine weitere Kategorie hinzufügen, erstellen wir einfach wieder einen neuen Ordner, erstellen darin eine index.js und fügen ein neues require mit dem Kategorienamen in unserer index.js im packages/main bzw client_packages Ordner hinzu.


    Nun können wir unser erstes System hinzufügen.
    Da werden wir nun beispielweise ein Login System hinzufügen.
    Also erstellen wir in unserem packages/main/auth Ordner einen neuen Ordner mit dem Namen login, und erstellen auch in diesem Ordner eine index.js Datei.
    Der packages Ordner sollte dann so aussehen:


    Als nächstes müssen wir nun in die index.js der Kategorie, in die wir unser neues System hinzugefügt haben, das neue System auch hinzufügen.
    Dafür verwenden wir wieder require, und unsere packages/main/auth/index.js sieht dann so aus:

    Code: index.js (packages/main/auth)
    1. require("./login");

    Und nun können wir unsereren serverseitigen Code vom Loginsystem in der packages/auth/login/index.js unterbringen! Dieser Code wird dann bei jedem Serverstart automatisch geladen.


    Wenn wir nun unseren clientseitigen Code hinzufügen möchten, dann machen wir das ganze fast genauso nochmal.
    Als erstes erstellen wir in unserem client_packages/auth Ordner einen neuen Ordner und nennen diesen wieder login und erstellen darin eine index.js.
    Nun fügen wir auch wieder im Ordner der Kategorie in die index.js unser neues System ein, aber hier kommt nun der Unterschied zwischen Clientside und Serverside:
    Immer wenn wir clientside require verwenden, geht Javascript vom client_packages Ordner aus, und nicht vom Ordner in dem wir uns gerade befinden.
    Also müssen wir dementsprechend den Pfad auch anpassen, das sollte dann so aussehen:

    Code: index.js (client_packages/auth)
    1. require("./auth/login");

    Nun haben wir auch clientside erfolgreich unser neues System hinzugefügt, und können unseren clientseitigen Code für das Loginsystem in der client_packages/auth/login/index.js unterbringen.


    Nun sind wir fertig. Alle weiteren Dateien wie zum Beispiel eine data.json packen wir dann zum dazugehörigen System in den Ordner.
    Für jedes weitere System wiederholen wir einfach die 3 Schritte:
    1. Ordner erstellen
    2. index.js im Ordner erstellen
    3. System in der index.js der Kategorie mit require hinzufügen



    Wie es dann letzendlich aussehen sollte, könnt ihr in diesem GitHub Repo sehen: GitHub Repo
    Ich hoffe es kann dem ein oder anderen helfen. Verbesserungsvorschläge oder Ideen für das nächste Tutorial sind gerne gesehen. :)

    LeonMrBonnie.de


    Scripting

    Ich helfe zu allen Fragen bezüglich PAWN Scripting gerne weiter.

    Auch im Bereich JavaScript und dort der RageMP API helfe ich gern.


    Kontakt

    Konversation: Konversation starten

    Oder eine der Kontaktmöglichkeiten auf leonmrbonnie.de