This commit is contained in:
Robin Grenzdörfer 2024-01-01 15:46:18 +00:00
parent cf0d66ad04
commit 2e06f92428
2 changed files with 40 additions and 1 deletions

39
docs/md/probleme.md Normal file
View File

@ -0,0 +1,39 @@
# Bekannte Probleme im Entwicklungsprozess mit TibiCMS
In diesem Abschnitt werden bekannte Probleme während des Entwicklungsprozesses mit TibiCMS beschrieben und Lösungsansätze aufgezeigt. Sollten ein Problem auftauchen, welches hier nicht beschrieben ist, ist es gerne gesehen, wenn dieses Problem hier dokumentiert wird.
## Probleme mit CollectionEntry Objekten
### Problemstellung
Wenn ein Objekt vom Typ CollectionEntry zurückgegeben wird, zeigt sich teilweise eine eingeschränkte Kompatibilität mit JavaScript. Beispielsweise funktioniert die push-Methode nicht bei Attributen, die einen Array-Datentyp speichern.
### Ursache
Die Problematik entsteht durch die Übersetzung des Objekts von Go nach JavaScript. Hierbei werden die Attribute nicht als native JavaScript-Objekte, sondern als Go-Objekte übersetzt, was zu einer eingeschränkten Kompatibilität führt. Insbesondere unterstützen sie nicht gängige Methoden wie push, pop etc. Ein weiteres Problem ist, dass bei diesen Inkompatibilitäten _keine Fehlermeldungen generiert_ werden, sondern schlichtweg _keine Aktion_ erfolgt.
### Lösungsansatz
Beim Manipulieren von CollectionEntry-Objekten innerhalb eines Hooks sollte man zur Sicherheit eine tiefe Kopie (Deep Copy) des Objekts erstellen, um es vollständig in ein JavaScript-Objekt zu konvertieren. Die Verwendung von {...} reicht hierbei nicht aus, da dies nur die oberste Ebene des Objekts konvertiert. JSON.stringify und JSON.parse sind nur dann zu empfehlen, wenn die Reihenfolge der Attribute irrelevant ist. Für Fälle, in denen die Reihenfolge wichtig ist, existiert bereits eine spezielle Funktion, die dies beibehält. Diese Funktion ist unter dem Namen „obj2str“ in der Utils-Datei zu finden.
### Warum die Ursache nicht behoben wurde
Die Ursache wurde nicht behoben, da die Standardmäßige, uneingeschränkte übersetzung von Go zu JS einen performancemäßigen totalschaden darstellt.
## Probleme mit SSR kompilierung
### Problemstellung
Website wird nur teilweise oder gar nicht gerendert.
### Ursache
In meinem Fall war das Problem, dass ein Button element in einem anderen Button Element enthalten war. Dies hat dazu geführt, dass der Compiler manchmal die Vollständige Seite nicht gerendert hat, manchmal auch nur vereinzelte Elemente.
### Lösungsansatz
Semantisch arbeiten.
### Warum die Ursache nicht behoben wurde
In dem fall liegt der Programmcode fehler nicht bei uns, da die Kompillierung von svelte übernommen wird.

View File

@ -508,4 +508,4 @@ dashboard:
newPageRef: false newPageRef: false
``` ```
![Resultierende Dashboard](dashboard.png) ![Resultierende Dashboard](./dashboard.png)