


Binden Sie Benutzer sofort ein: Betten Sie eine interaktive Demo in Ihr React SPA ein
Wenn ein Bild mehr sagt als tausend Worte, dann muss eine interaktive Demo... eine Million wert sein?
Mögen Sie es, durch Schlagworte zu scrollen, um den Zweck einer App zu verstehen? Wahrscheinlich nicht. Und ich hatte keine Lust, so viel Geschwätz für mein neuestes Leidenschaftsprojekt Wanna zu schreiben. Deshalb habe ich eine interessantere Lösung verfolgt: Meine App auf einer eigenen Landingpage verschachteln, damit Benutzer sie erkunden können!
Durchführung
Dank der Zusammensetzbarkeit von React können wir fast einfach unsere Root-App-Komponente rendern und Schluss machen:
export const InteractiveDemo = () => { return ( <App /> ) }
Es treten jedoch einige Probleme auf:
- Die Navigation der Demo-App navigiert durch die echte App
- Die Demo-App ruft echte Daten ab, die möglicherweise fehlschlagen oder nicht gut dargestellt werden
- Für Benutzer ist es möglicherweise nicht offensichtlich, was sie sehen
Lassen Sie uns diese lösen. Ich möchte React Router v6 und Apollo GraphQL verwenden, aber die Konzepte gelten unabhängig von der Technologie.
Navigation
Um die Navigation der Demo-App von der echten App zu trennen, packen wir sie in einen anderen Navigationsanbieter ein:
+import { MemoryRouter, UNSAFE_LocationContext } from 'react-router' export const InteractiveDemo = () => { return ( + // Hack to nest MemoryRouter inside BrowserRouter. + // https://github.com/remix-run/react-router/issues/7375 + <UNSAFE_LocationContext.Provider value={null}> + <MemoryRouter initialEntries={['/app']}> <App /> + </MemoryRouter> + </UNSAFE_LocationContext.Provider> ) }
Beachten Sie, dass wir einen MemoryRouter verwenden, damit der Browser auf derselben Seite bleibt, während die Demo intern navigiert.
Daten
Um die Demo-App mit gefälschten Daten zu versorgen, pflegen wir mit useState ein gefälschtes „Backend“ innerhalb der Client-App und stellen es über einen simulierten Client oder Server bereit (je nach Implementierung). Es greift nur minimal in den Rest des App-Codes ein und ermöglicht es uns sogar, die Demo für manuelle Tests zu verwenden – sehr praktisch, wenn man schnell iteriert.
Ich habe Mock-Apollo-Client verwendet; Für REST oder tRPC könnten Sie so etwas wie Nock verwenden. Sie sind für automatisierte Tests gedacht, aber genau das, was wir hier brauchen.
Zuerst erstellen wir einen Schein-Client, dessen Anforderungshandler Demodaten abfragen und so verändern, dass sie das echte Backend nachahmen:
import { InMemoryCache } from '@apollo/client' import { createMockClient, createMockSubscription } from 'mock-apollo-client' import { useMemo, useState } from 'react' // GraphQL documents that our client sends to the real server import GET_FRIENDS from '../../gql/getFriends.gql' import ADD_FRIEND from '../../gql/addFriend.gql' // Simplified example export const useDemoClient = () => { const [friends, setFriends] = useState[{ __typename: 'User', id: 1, name: 'Nick', }] // Cache should persist across clients const cache = useMemo(() => { // Should be the same cache configuration you provide to your real Apollo client return new InMemoryCache() }, []) // We need to recreate the mock client whenever the data changes // because it doesn't support resetting request handlers. const mockClient = useMemo(() => { const client = createMockClient({ cache }) client.setRequestHandler(GET_FRIENDS, () => Promise.resolve({ data: { friends: friends } })) client.setRequestHandler(ADD_FRIEND, ({ user }) => { setFriends((prev) => prev.concat([user])) return Promise.resolve({ data: { addFriend: user } }) }) return client }, [friends]) return mockClient }
Dann packen wir unsere Demo genau wie bei der Navigation in einen neuen Anbieter mit unserem Mock-Client:
+import { ApolloProvider } from '@apollo/client' export const InteractiveDemo = () => { + const demoClient = useDemoClient() return ( + <ApolloProvider client={demoClient}> <UNSAFE_LocationContext.Provider value={null}> <MemoryRouter initialEntries={['/app']}> <App /> </MemoryRouter> </UNSAFE_LocationContext.Provider> + </ApolloProvider> ) }
Wenn Sie stattdessen einen Scheinserver verwenden würden, würden Sie dessen URL in den echten Client der Demo-App einfügen.
Visuals
Es funktioniert! Wie machen wir nun für den Benutzer deutlich, dass er sich eine interaktive Demo ansieht?
Da das Mobilgerät an erster Stelle steht, habe ich mich entschieden, die Demo in einem Telefonrahmen zu rendern. Ich habe devices.css verwendet, weil es die Geräte bietet, die meiner Meinung nach am besten aussehen (d. h. minimaler Rahmen, um den Platz für die Demo zu maximieren). Aber der Einfachheit halber verwenden wir hier eine Bibliothek, die React sofort unterstützt: React-Device-Frameset.
Lassen Sie uns auch Zoom verwenden, um die Demo-Benutzeroberfläche zu verkleinern und sie schön in den Rest der Seite zu verschachteln. In Wanna musste ich diesen Zoom umkehren und berücksichtigen, wenn ich
export const InteractiveDemo = () => { return ( <App /> ) }
Das obige ist der detaillierte Inhalt vonBinden Sie Benutzer sofort ein: Betten Sie eine interaktive Demo in Ihr React SPA ein. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen











Python eignet sich besser für Anfänger mit einer reibungslosen Lernkurve und einer kurzen Syntax. JavaScript ist für die Front-End-Entwicklung mit einer steilen Lernkurve und einer flexiblen Syntax geeignet. 1. Python-Syntax ist intuitiv und für die Entwicklung von Datenwissenschaften und Back-End-Entwicklung geeignet. 2. JavaScript ist flexibel und in Front-End- und serverseitiger Programmierung weit verbreitet.

Zu den Hauptanwendungen von JavaScript in der Webentwicklung gehören die Interaktion der Clients, die Formüberprüfung und die asynchrone Kommunikation. 1) Dynamisches Inhaltsaktualisierung und Benutzerinteraktion durch DOM -Operationen; 2) Die Kundenüberprüfung erfolgt vor dem Einreichung von Daten, um die Benutzererfahrung zu verbessern. 3) Die Aktualisierung der Kommunikation mit dem Server wird durch AJAX -Technologie erreicht.

Die Anwendung von JavaScript in der realen Welt umfasst Front-End- und Back-End-Entwicklung. 1) Zeigen Sie Front-End-Anwendungen an, indem Sie eine TODO-Listanwendung erstellen, die DOM-Operationen und Ereignisverarbeitung umfasst. 2) Erstellen Sie RESTFUFFUPI über Node.js und express, um Back-End-Anwendungen zu demonstrieren.

Es ist für Entwickler wichtig, zu verstehen, wie die JavaScript -Engine intern funktioniert, da sie effizientere Code schreibt und Leistungs Engpässe und Optimierungsstrategien verstehen kann. 1) Der Workflow der Engine umfasst drei Phasen: Parsen, Kompilieren und Ausführung; 2) Während des Ausführungsprozesses führt die Engine dynamische Optimierung durch, wie z. B. Inline -Cache und versteckte Klassen. 3) Zu Best Practices gehören die Vermeidung globaler Variablen, die Optimierung von Schleifen, die Verwendung von const und lass und die Vermeidung übermäßiger Verwendung von Schließungen.

Python und JavaScript haben ihre eigenen Vor- und Nachteile in Bezug auf Gemeinschaft, Bibliotheken und Ressourcen. 1) Die Python-Community ist freundlich und für Anfänger geeignet, aber die Front-End-Entwicklungsressourcen sind nicht so reich wie JavaScript. 2) Python ist leistungsstark in Bibliotheken für Datenwissenschaft und maschinelles Lernen, während JavaScript in Bibliotheken und Front-End-Entwicklungsbibliotheken und Frameworks besser ist. 3) Beide haben reichhaltige Lernressourcen, aber Python eignet sich zum Beginn der offiziellen Dokumente, während JavaScript mit Mdnwebdocs besser ist. Die Wahl sollte auf Projektbedürfnissen und persönlichen Interessen beruhen.

Sowohl Python als auch JavaScripts Entscheidungen in Entwicklungsumgebungen sind wichtig. 1) Die Entwicklungsumgebung von Python umfasst Pycharm, Jupyternotebook und Anaconda, die für Datenwissenschaft und schnelles Prototyping geeignet sind. 2) Die Entwicklungsumgebung von JavaScript umfasst Node.JS, VSCODE und WebPack, die für die Entwicklung von Front-End- und Back-End-Entwicklung geeignet sind. Durch die Auswahl der richtigen Tools nach den Projektbedürfnissen kann die Entwicklung der Entwicklung und die Erfolgsquote der Projekte verbessert werden.

C und C spielen eine wichtige Rolle in der JavaScript -Engine, die hauptsächlich zur Implementierung von Dolmetschern und JIT -Compilern verwendet wird. 1) C wird verwendet, um JavaScript -Quellcode zu analysieren und einen abstrakten Syntaxbaum zu generieren. 2) C ist für die Generierung und Ausführung von Bytecode verantwortlich. 3) C implementiert den JIT-Compiler, optimiert und kompiliert Hot-Spot-Code zur Laufzeit und verbessert die Ausführungseffizienz von JavaScript erheblich.

Python eignet sich besser für Datenwissenschaft und Automatisierung, während JavaScript besser für die Entwicklung von Front-End- und Vollstapel geeignet ist. 1. Python funktioniert in Datenwissenschaft und maschinellem Lernen gut und unter Verwendung von Bibliotheken wie Numpy und Pandas für die Datenverarbeitung und -modellierung. 2. Python ist prägnant und effizient in der Automatisierung und Skripten. 3. JavaScript ist in der Front-End-Entwicklung unverzichtbar und wird verwendet, um dynamische Webseiten und einseitige Anwendungen zu erstellen. 4. JavaScript spielt eine Rolle bei der Back-End-Entwicklung durch Node.js und unterstützt die Entwicklung der Vollstapel.
