Hinzufügen eines stillen Verbindungspunkts zum Reagieren (create-react-app)

9

Ich habe eine React-Anwendung, die mit dem Modul create-react-app erstellt wurde. Ich wurde kürzlich von einem Kunden gebeten, sich in oidc zu integrieren. Zu diesem Zweck verwende ich redux-oidc , da ich Redux bereits in meiner App verwende.

>

Wir haben es geschafft, meine Anwendung in ihren Identity-Server zu integrieren, und ich kann mich anmelden und das Benutzer-Token in redux ablegen. Das Problem ist, dass ich Schwierigkeiten habe, silent extend in meinem create-react einzurichten -Anwendung, da ich einen zusätzlichen Einstiegspunkt hinzufügen muss. Gibt es eine Möglichkeit, einen zusätzlichen Einstiegspunkt zu silent_renew/index.js hinzuzufügen, ohne create-react-app auszustoßen?

Momentan habe ich einen Ordner namens silent_renew erstellt, der eine index.js Datei enthält. Dieser Ordner enthält auch eine silent_renew.html -Datei mit nicht viel drin (Siehe: Beispiel-App ähnlich meiner Ordnerstruktur ).

    
Herm 12.05.2017, 13:08
quelle

3 Antworten

7

Da die Startseite von silent_renew nur eine einfache HTML-Seite ist, könnten Sie das Webpack umgehen. Legen Sie einfach die folgende Datei in den öffentlichen Ordner. Fügen Sie auch eine Kopie der Bibliothek oidc-client.min.js in denselben Ordner ein.

public / silent_renew.html:

%Vor%

Dies funktioniert auf meiner Website in de develepment config. Für die Produktion configI haben die folgenden im Hinterkopf (habe es noch nicht getestet, aber ich bin ziemlich zuversichtlich, das ist der Weg nach vorne ...)

public / index.js

%Vor%

Sobald create-react-app mehrere Einstiegspunkte unterstützt, hoffe ich, dass dies bald für Unternehmensanmeldeszenarien passiert, dieser Code wird überflüssig.

    
Merijn 17.05.2017, 10:43
quelle
0
___ qstnhdr ___ Hinzufügen eines stillen Verbindungspunkts zum Reagieren (create-react-app) ___ tag123javascript ___ JavaScript (nicht zu verwechseln mit Java) ist eine dynamische Sprache mit mehreren Paradigmen auf hoher Ebene, die sowohl für das clientseitige als auch für das serverseitige Scripting verwendet wird. Verwenden Sie dieses Tag für Fragen zu ECMAScript und seinen verschiedenen Dialekten / Implementierungen (außer ActionScript und Google-Apps-Script). ___ tag123reactjs ___ React ist eine JavaScript-Bibliothek zum Erstellen von Benutzeroberflächen. Es verwendet ein deklaratives Paradigma und zielt darauf ab, sowohl effizient als auch flexibel zu sein. ___ tag123webpack ___ Webpack ist ein JavaScript Modul Bundler. Webpack verwendet Module mit Abhängigkeiten und generiert statische Elemente, die diese Module repräsentieren. Die wichtigsten Funktionen von Webpack basieren auf Erweiterbarkeit und ermöglichen Entwicklern die Verwendung von Best Practices in Webarchitektur und Webleistung. ___ tag123createreactapp ___ create-react-app ist ein Starter-Kit zum Erstellen von React-Apps ohne Build-Konfiguration. Wenn Sie mit React beginnen, verwenden Sie dies, um den Build Ihrer App zu automatisieren. Es gibt keine Konfigurationsdatei und react-scripts ist die einzige zusätzliche Build-Abhängigkeit in Ihrer package.json. Ihre Umgebung wird alles enthalten, was Sie brauchen, um eine moderne React-App zu erstellen. ___ antwort43966817 ___

Sie können keinen benutzerdefinierten Webpack-Loader hinzufügen, wenn Sie nicht ausgeworfen haben:

  

Wir beabsichtigen nicht, Webpack-spezifische Overrides bereitzustellen, da dies sehr fragil sein wird. Die Leute werden anfangen, abhängig von bestimmten Loadern und Plugins, und wir werden nicht in der Lage sein, das Gesamterlebnis zu verbessern.

Quelle: Ссылка

Wenn Sie eine neue spezifische Eintragsdatei hinzufügen möchten, müssen Sie zuerst yarn eject und dann config/webpack.config.dev.js:34 und config/webpack.config.prod.js:55 bearbeiten. Dasselbe gilt für das Hinzufügen neuer Webpack Loader.

    
___ qstntxt ___

Ich habe eine React-Anwendung, die mit dem Modul create-react-app erstellt wurde. Ich wurde kürzlich von einem Kunden gebeten, sich in oidc zu integrieren. Zu diesem Zweck verwende ich redux-oidc , da ich Redux bereits in meiner App verwende.

>

Wir haben es geschafft, meine Anwendung in ihren Identity-Server zu integrieren, und ich kann mich anmelden und das Benutzer-Token in redux ablegen. Das Problem ist, dass ich Schwierigkeiten habe, silent extend in meinem create-react einzurichten -Anwendung, da ich einen zusätzlichen Einstiegspunkt hinzufügen muss. Gibt es eine Möglichkeit, einen zusätzlichen Einstiegspunkt zu %code% hinzuzufügen, ohne create-react-app auszustoßen?

Momentan habe ich einen Ordner namens silent_renew erstellt, der eine %code% Datei enthält. Dieser Ordner enthält auch eine %code% -Datei mit nicht viel drin (Siehe: Beispiel-App ähnlich meiner Ordnerstruktur ).

    
___ answer43966968 ___

Wie bereits erwähnt, würde das Ändern der Webpack-Konfiguration von %code% dem Zweck dieses Projekts widersprechen und eine Möglichkeit bieten, mit der Null-Konfiguration zu reagieren.

Ich fürchte, die Lösung wäre, Ihre App zu entfernen, die irreversibel ist.

Nachdem Sie dies getan haben, erstellen Sie das Verzeichnis %code% im Stammverzeichnis Ihres Projekts mit der Datei %code% und %code% , erstellen Sie ein %code% für redux, so wie hier (Sie brauchen wahrscheinlich nicht viel von diesem Zeug, wie Sagen, der Router und Logger-Middleware, einfach nehmen die %code% Logik und Speichererstellung), importiere das Geschäft in die %code% Datei und erstelle ein redux %code% , wie zB dies .

Dann können Sie %code% ändern und dem folgen, was wir im redux-oihc-beispiel webpack conf. Fügen Sie %code% und %code% für %code% und den zusätzlichen Einstiegspunkt hinzu.

Was CRA etwas nervt, ist, dass ihre Webpack-Konfiguration für dev und prod vollständig getrennt ist und keine gemeinsame Erweiterung darstellt. Sie müssen diese Operation sowohl in prod- als auch in dev-Konfigurationen durchführen oder eine andere conf-Datei erweitern, um Redundanz zu vermeiden, wie zB dies zum Beispiel.

Ich würde Ihnen auch raten, ein anderes einfaches Gerüst zu verwenden, CRA ist gut, wenn Sie nichts Besonderes zu tun haben, was Sie wollen (und wahrscheinlich auch mehr in der Zukunft). Durch das Auswerfen werden viele Dateien und Code erstellt, den Sie nicht einmal in Ihrer eigenen Codebasis benötigen. Ein Freund und ich haben einen minimalistischen gemacht, aber ich bin sicher, es gibt viele bessere Alternativen.

    
___ answer44022621 ___

Da die Startseite von silent_renew nur eine einfache HTML-Seite ist, könnten Sie das Webpack umgehen. Legen Sie einfach die folgende Datei in den öffentlichen Ordner. Fügen Sie auch eine Kopie der Bibliothek oidc-client.min.js in denselben Ordner ein.

public / silent_renew.html:

%Vor%

Dies funktioniert auf meiner Website in de develepment config. Für die Produktion configI haben die folgenden im Hinterkopf (habe es noch nicht getestet, aber ich bin ziemlich zuversichtlich, das ist der Weg nach vorne ...)

public / index.js

%Vor%

Sobald create-react-app mehrere Einstiegspunkte unterstützt, hoffe ich, dass dies bald für Unternehmensanmeldeszenarien passiert, dieser Code wird überflüssig.

    
___
enapupe 14.05.2017 17:22
quelle
0

Wie bereits erwähnt, würde das Ändern der Webpack-Konfiguration von create-react-app dem Zweck dieses Projekts widersprechen und eine Möglichkeit bieten, mit der Null-Konfiguration zu reagieren.

Ich fürchte, die Lösung wäre, Ihre App zu entfernen, die irreversibel ist.

Nachdem Sie dies getan haben, erstellen Sie das Verzeichnis silent_renew im Stammverzeichnis Ihres Projekts mit der Datei index.js und index.html , erstellen Sie ein store für redux, so wie hier (Sie brauchen wahrscheinlich nicht viel von diesem Zeug, wie Sagen, der Router und Logger-Middleware, einfach nehmen die loadUser Logik und Speichererstellung), importiere das Geschäft in die src/index.js Datei und erstelle ein redux Provider , wie zB dies .

Dann können Sie config/webpack.config.dev.js ändern und dem folgen, was wir im redux-oihc-beispiel webpack conf. Fügen Sie HtmlWebpackPlugin und CommonsChunkPlugin für silentRenew und den zusätzlichen Einstiegspunkt hinzu.

Was CRA etwas nervt, ist, dass ihre Webpack-Konfiguration für dev und prod vollständig getrennt ist und keine gemeinsame Erweiterung darstellt. Sie müssen diese Operation sowohl in prod- als auch in dev-Konfigurationen durchführen oder eine andere conf-Datei erweitern, um Redundanz zu vermeiden, wie zB dies zum Beispiel.

Ich würde Ihnen auch raten, ein anderes einfaches Gerüst zu verwenden, CRA ist gut, wenn Sie nichts Besonderes zu tun haben, was Sie wollen (und wahrscheinlich auch mehr in der Zukunft). Durch das Auswerfen werden viele Dateien und Code erstellt, den Sie nicht einmal in Ihrer eigenen Codebasis benötigen. Ein Freund und ich haben einen minimalistischen gemacht, aber ich bin sicher, es gibt viele bessere Alternativen.

    
Aperçu 14.05.2017 17:36
quelle