sollte ich serverseitiges Rendern (Next.js) für eine Dapp verwenden?

In letzter Zeit habe ich viel über Dapps gelernt und arbeite jetzt an einem etwas komplexen. Was ich also fragen wollte, ist, was für einen Dapp besser ist? SSR oder CSR? Ich habe an einigen Stellen gelesen, dass wir SSR verwenden sollten, falls Metamask nicht im Browser installiert ist und wir Informationen von der Ethereum-Blockchain auf dem Server abrufen können, indem wir so etwas wie Infura vom Server verwenden (natürlich können wir immer noch nichts signieren).

Eine einfache Einrichtung wäre wie der Code im Link unten

Ein Beispiel für die Einrichtung von web3

Wie Sie sehen können, überprüfe ich, ob web3 im Browser vorhanden ist, und verwende das injizierte, aber wenn dies nicht der Fall ist (andernfalls), verwende ich infura.

Meine Frage ist, dass wir CSR nicht einfach verwenden können, da es auch dann funktioniert, wenn die Seite auf der Clientseite gerendert wird. Es wird einfach infura verwendet, wenn web3 nicht beendet wird, und wir können die Lebenszyklusmethode „componentDidMount“ zum Abrufen der Daten aus der Ethereum-Blockchain verwenden. Bitte fragen Sie bei Bedarf nach den Details

Grüße

Hier ist eine Antwort, die CSR vorschlägt, die auch einige Erkenntnisse enthält: ethereum.stackexchange.com/a/31160/68648

Antworten (2)

Die große Idee hinter der Verwendung der Next.jsIn-Ethereum-Anwendungen (dapps) ist das serverseitige Rendering. Sie können CSR auch verwenden, aber es ist nicht gut für die Benutzererfahrung.

Angenommen, Sie erstellen eine Abstimmungsanwendung und die Kandidaten werden in der Blockchain gespeichert. Um das HTML-Dokument zu füllen, sollten die Daten aus der Blockchain abgerufen werden. Wie Sie sagten, können wir die Daten zu CSR abrufen und die Funktion verwenden componentDidMount. Zunächst dauert es länger. Zweitens, wenn Benutzer Metamask nicht installiert haben, sieht der Benutzer ein leeres HTML-Dokument und wird nie Interesse an der Anwendung bekommen und wird nicht einmal versuchen, Metemask zu installieren.

Auf der anderen Seite führt next.jsder next.jsServer durch die Verwendung von die Reaktions-App aus und führt die erforderlichen Aufrufe an die Blockchain durch, um Daten abzurufen und das HTML-Dokument zu füllen, und sendet dann das ausgefüllte HTML-Dokument mit diesen Daten an den Client, später sendet er auch den gesamten JS-Code um Benutzerinteraktionen im Browser zu verarbeiten.

SSR wird also vorgeschlagen, weil wir unseren Benutzern etwas zeigen sollten, ob sie Metamask bereits installiert haben oder nicht.

Hoffe es hilft zum klaren Verständnis.

Nun, das klärt es ziemlich. Der Hauptgrund ist also nicht, dass wir SSR verwenden müssen, sondern es ist bequemer, SSR für die Benutzererfahrung zu verwenden?
perfekte Antwort aller Zeiten !! Danke, Abdullah.

Es gibt ein wenig mehr Unterscheidung, die helfen kann, die Antwort zu verdeutlichen.

Wenn Sie mit einem Blockchain-Netzwerk arbeiten, können Sie viele Dinge ohne die Informationen des Kontoinhabers tun, z. B. das Auffinden von Verträgen und das Aufrufen ihrer Methoden. Alles, was Sie tun müssen, um die Informationen des Kontoinhabers zu verwenden, muss jedoch im CSR-Kontext durchgeführt werden.