1. Weiterleitung zu NetzLiving.de
  2. Forum
    1. Unerledigte Themen
  3. zum neuen Forum
  • Anmelden
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Ziggy's route helper global einbinden bei Svelte

    • JavaScript
  • Syntafin
  • 30. Juli 2024 um 18:30
  • Unerledigt
Hallo zusammen,

das Informatik-Forum geht in den Archivmodus, genaue Informationen kann man der entsprechenden Ankündigung entnehmen. Als Dankeschön für die Treue bekommt man von uns einen Gutscheincode (informatikforum30) womit man bei netzliving.de 30% auf das erste Jahr sparen kann. (Genaue Infos sind ebenfalls in der Ankündigung)

Vielen Dank für die Treue und das Verständnis!
  • Syntafin
    Punkte
    7.925
    Beiträge
    1.439
    • 30. Juli 2024 um 18:30
    • #1

    Hallöchen!

    Hat hier jemand schon Erfahrung gemacht oder weiß wie ich es bewerkstelligen kann das ich die Helper Funktion route() global in allen Komponenten verfügbar machen kann?

    Alles was ich zu gefunden habe, ist mehr eine Notlösung als eine echte Lösung des ganzen X/.

    Denn in jeder Komponente nun const route = window.route; einfügen sehe ich nicht gerade als Lösung, zumal das scheinbar nur lokal hilft beim Bauen aber weiterhin Fehler wirft das route() nicht definiert sei.

  • Blacksonny
    Punkte
    2.768
    Beiträge
    505
    • 30. Juli 2024 um 19:51
    • #2

    Wieso nicht einfach eine Helper Klasse bauen und eine Methode daraus machen. Kannst die Klasse dann ja, da wo nötig, importieren und nutzen. Gibt bestimmt noch andere Sachen, die du auslagern könntest

  • Syntafin
    Punkte
    7.925
    Beiträge
    1.439
    • 30. Juli 2024 um 20:21
    • #3

    Das wäre doppelt gemobbelt, wären ja Zustände wie bei Nvidia, für etwas vorhandenes etwas machen ^^.

    Ich bräuchte halt echt die Funktion global verfügbar, wie man es zB auch von React oder Vue kennt.

    Da ist das ja wie man hier sieht ganz einfach:

    JavaScript
    import { ZiggyVue } from 'ziggy-js';
    import { Ziggy } from './ziggy';
    
    const app = createApp({ render: () => h(App, props) })
       .use(plugin)
       .use(i18n)
       .use(ZiggyVue, Ziggy);
       
    app.mount(el);

    So hat man dann eben Ziggy und seine Funktionen global verfügbar, für Svelte suche ich das eben auch, sonst müsste ich es in knapp 300 Komponenten jetzt nachträglich überall importieren und das kann ja nicht der Zweck sein bei etwas fundermentalem.

  • Blacksonny
    Punkte
    2.768
    Beiträge
    505
    • 30. Juli 2024 um 21:32
    • #4

    Also ich meine es gibt ja so etwas wie static für Java gibts bestimmt auch für Typescript.

    Ansonsten würde mir nichts dazu einfallen


    Edit: nach etwas recherche soll es möglich sein die Variable so global zu machen

    TypeScript
    const route = window.route;
    
    (window as any).route = route;
  • Syntafin
    Punkte
    7.925
    Beiträge
    1.439
    • 30. Juli 2024 um 22:56
    • #5

    Das hab ich auch gelesen, war aber eine "Notlösung" die in jede Komponente muss, ich probiere das mal eben lokal aus :) .


    Update:

    Build läuft nun durch, hab da was gefunden in einem Repo:

    JavaScript
    import { Ziggy } from '@/ziggy.js';
    import { route } from 'ziggy-js';
    
    global.route = (name, params, absolute, config) => route(name, params, absolute, Ziggy);

    Es haut mir zwar noch immer haufen Meldungen raus (weswegen SSR nicht gestartet werden kann), aber zumindest läuft der Build wieder:

    Code
    1:30:39 AM [vite-plugin-svelte] /home/syntafin/projects/InertiaApp/resources/js/Pages/Auth/Login.svelte:26:24 'route' is not defined
    24:         <p class="mb-7 text-xs">
    25:             Verify your Character in Seconds & get exclusive features. Don’t have an account?
    26:             <Link href={route("register")} class="text-xs font-semibold text-primary-main hover:underline">Sign up</Link
                                ^
    27:             >.
    28:         </p>

    Besser als nix also :D

    Einmal editiert, zuletzt von Syntafin (31. Juli 2024 um 01:32)

  • flyingtable07
    Punkte
    3.580
    Beiträge
    681
    • 28. August 2024 um 21:29
    • #6
    Zitat von Syntafin

    Denn in jeder Komponente nun const route = window.route; einfügen sehe ich nicht gerade als Lösung, zumal das scheinbar nur lokal hilft beim Bauen aber weiterhin Fehler wirft das route() nicht definiert sei..<

    Wenn du die Variable mit window.route = function(){blablabla}; deklariert hast, kannst du die überall einfach mit route() aufruf ohne irgendwas davor. Alles was im window Objekt ist ist auch Ohne Objekt direkt aufrufbar

    Code
    window.route = function() {
        console.log("Hallo");
    }
    
    route();
  • Syntafin
    Punkte
    7.925
    Beiträge
    1.439
    • 28. August 2024 um 21:40
    • #7

    Danke für den Versuch der Hilfe hierbei.

    Jedoch ungetestet kann ich dir anhand des Startbeitrages + Thementitels sagen, das das so nicht funktionieren wird (nein es würde sogar alles Crashen)

  • flyingtable07
    Punkte
    3.580
    Beiträge
    681
    • 29. August 2024 um 06:43
    • #8
    Zitat von Syntafin

    Danke für den Versuch der Hilfe hierbei.

    Jedoch ungetestet kann ich dir anhand des Startbeitrages + Thementitels sagen, das das so nicht funktionieren wird (nein es würde sogar alles Crashen)

    ok.
    Wo läuft das Js um das es geht überhaupt. Auf dem Server oder auf dem Client?

  • Syntafin
    Punkte
    7.925
    Beiträge
    1.439
    • 29. August 2024 um 06:50
    • #9

    SSR = Server Side Rendering

    Das läuft auf dem Server.

  • flyingtable07
    Punkte
    3.580
    Beiträge
    681
    • 29. August 2024 um 11:28
    • #10
    Zitat von Syntafin

    SSR = Server Side Rendering

    Das läuft auf dem Server.

    ah verstehe

Tags

  • ziggy
  • frontend
  • svelte
  • sveltejs
  1. Datenschutzerklärung
  2. Impressum