Code Monkey home page Code Monkey logo

Comments (4)

dashuber avatar dashuber commented on September 12, 2024 3

Ich mach das mal noch fertig

from lokaler-kaufen-app.

defaude avatar defaude commented on September 12, 2024

Habe schon einmal einen größeren Teil der Backend Controller im Frontend als Clients gespiegelt. Ein paar fehlen allerdings noch, das sollte jedoch im Prinzip nur Fleißarbeit sein.

Nächster Schritt: Einziehen einer Service-Schicht zwischen den Clients und den UI Komponenten (ein Bisschen Inspiration gibt's ja schon z.B. mit dem AdminService).

In der ersten Welle würde der Auslöser, ob ein Request raus gehen soll oder nicht, immer noch von der jeweiligen UI Komponente ausgehen - aber der Service hat die Möglichkeit, zu entscheiden, ob er mit dem Request wirklich bis zum Client durchgeht oder ob vllt. von einem vorherigen Request (z.B. Postleitzahl-Suche) eine response (Promise) herumliegt

from lokaler-kaufen-app.

defaude avatar defaude commented on September 12, 2024

Ein nächster Schritt wäre dann, die Services (wo sinnvoll) so umzubauen, dass sie eine "resolve" Funktion für die relevanten Routen haben, wo die benötigten Daten geladen werden und die Navigation im Routing festgehalten wird, bis die Daten da sind.

Beispiel: User navigiert zu /shops/foo123

  1. Router ruft die entsprechende "resolve" Methode auf dem ShopService auf
  2. Dieser weiß jetzt, dass die Details für den Laden geholt werden müssen (trigger)
  3. Der Service schaut erst mal, ob er ggf. die Daten schon hat (etwa von einem vorherigen Besuch der gleichen Shop-Seite)
  4. Nur wenn nein, werden die Daten per Client vom Backend geladen
  5. "resolve" ist fertig
  6. Router macht mit seiner Arbeit weiter
  7. ShopDetailsPage wird vom Router auf die Bühne gestellt und holt sich beim ShopService die Daten (immer noch eine Promise, weil diese Daten per Definition nur Asynchron vorhanden sind
  8. Da diese Promise aber sofort resolved (oder rejected im Fehlerfall), kann die UI instant was anzeigen

from lokaler-kaufen-app.

defaude avatar defaude commented on September 12, 2024

Im Fehlerfall ist es auch denkbar, die "resolve" Funktion rejecten zu lassen - aber da muss ich erst noch mal nachlesen, wie der Router sich da verhält (und wir müssen uns überlegen, wie wir diesen Fehlerzustand darstellen wollen, da bisher das Handling dieses Fehlers erst auf der jeweiligen Seite passiert ist)

from lokaler-kaufen-app.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.