2016-12-01 14 views
4

Also überlege ich, unser gesamtes Übersetzungsobjekt in den Redux-Store zu legen, bevor wir auf den Client hydratisieren. Dieses Übersetzungsobjekt ist ca. 50kb gziped und 115kb unkomprimiert.Wie groß ist zu groß für ein Redux-Geschäft?

Unsere gesamte Website ist übersetzt, so dass dieses Übersetzungsobjekt im Grunde alle nicht-dynamische Kopie über die Website darstellt. Wenn es auf dem ersten HTTP-Request auf den Client hydratisiert wird, sollte es für ein sofortiges Browsing-Erlebnis sorgen, zumindest für eine interne Kopie.

Allerdings frage ich mich, ob das viel zu groß für einen Redux-Shop ist?

Antwort

4

Sie sollten die Übersetzungen separat laden. Webpack ermöglicht Code-Aufteilung, die helfen kann. Oder Sie können einfach ein Skript-Tag verwenden.

Der Grund für das Laden separat ist, damit der Browser es zwischenspeichern kann. Dadurch kann es nur einmal pro Benutzer geladen werden. Da die von React generierte HTML-Seite dynamisch ist und der von Ihnen übergebene Speicher ebenfalls dynamisch ist, können sie nicht zwischengespeichert werden.

Mit so einem großen Datenpaket ist das Laden auf jeder Seitenladung nur eine schlechte Idee.

Auch das Geschäft ist für den Staat. Es geht um Dinge, die sich ändern. Es ist nicht das, was man mit statischen Daten tun soll. Das bedeutet nicht, dass es nicht gemacht werden kann, aber es ist einfach keine gute Übereinstimmung.

3

Ich glaube nicht, dass es eine "zu große" Größe für einen Redux-Laden gibt. Es sollte jedoch nur den Anwendungsstatus enthalten. Die Übersetzungsobjekte sollten im Code enthalten sein und Sie sollten über eine i18n-Bibliothek darauf zugreifen können. Der Status sollte ein Feld enthalten, das angibt, welche Sprache Sie dem Benutzer zeigen müssen.

+0

Vage und subjektiv ... Im Geschäft _is_ "im Code". Außerdem scheint es [viele Lösungen] (https://github.com/zoover/react-redux-i18n) zu geben, die Übersetzungsdaten direkt in den Laden integrieren. Hast du etwas Konkreteres oder ist es nur deine Meinung? Um es klar zu sagen, ich würde nicht direkt auf Schlüssel innerhalb des Zustands zugreifen, sondern sie nur dort laden und darauf zeigen. –

+0

@JohnDoe natürlich ist es nur meine Meinung, Sie können speichern, was Sie wollen im Laden, aber wie die erste Zeile der Redux-Dokumentation sagt, es ist ein "State Container". Warum würden Sie alle statischen Daten speichern, die nicht den globalen Status der Anwendung darstellen? –

+0

Ich meine, es ist "Staat" in einem Sinne, dass Benutzer die Sprache der Benutzeroberfläche frei ändern können. Der lokalisierte Inhalt ist tatsächlich ein "Zustand" der Anwendung. –