So reagieren Sie schnell in Drupal

Veröffentlicht: 2022-10-11

Bevor wir zum „Wie“ kommen, lassen Sie uns ein wenig über das „Warum“ der Implementierung von React in Drupal sprechen. Wie Sie wissen, ist React eine sehr entwicklerfreundliche, komponentenbasierte JavaScript-Bibliothek, mit der Entwickler hochwertige, komplexe Front-End-Schnittstellen erstellen können. Drupal ist ein robustes und leistungsstarkes Content-Management-Framework, das inhaltsgesteuerte und flexible Web-Erlebnisse ermöglicht. Durch die Kombination der überlegenen Front-End-Theming-Funktionen von React mit dem leistungsstarken Back-End-Framework von Drupal können Sie leistungsstarke und außergewöhnliche digitale Erlebnisse liefern. Schauen wir uns die Erstellung von React -Komponenten in Drupal 9 genauer an.

Reagieren Sie schnell in Drupal

Aber zuerst, was ist React?

Per Definition: „React ist eine deklarative, effiziente und flexible JavaScript-Bibliothek zum Erstellen von Frontend-Benutzeroberflächen. Sie können damit komplexe UIs aus kleinen und isolierten Codeteilen, den sogenannten Komponenten , zusammenstellen.“

Wenn Sie mit Pattern Lab vertraut sind, sollte es Ihnen leicht fallen, die grundlegenden Bausteine ​​von React zu verstehen. Wir beginnen mit den Grundbausteinen oder Atomen einer Seite und arbeiten uns nach oben, um Designs zu erstellen.

Designs erstellen

Viele Entwickler ziehen es vor, JSX zu verwenden, um HTML-Code in React zu schreiben. Lesen Sie weiter, um herauszufinden, warum.

Warum JSX für React

Der Codierungsstil und die Syntax von React können komplex werden und sind nicht sehr entwicklerfreundlich. Wie Sie unten sehen, wird ein HTML-Element in React auf diese Weise erstellt.

 const element = React.createElement ( 'h1', {className: 'greeting'}, 'Hello, world!' );

Und so schreiben Sie dieselbe Funktion in React mit JSX:

 const element = <h1 className="greeting">Hello World!</h1>

Mit JSX können Sie den Namen der Klasse wie unten erwähnt mit der vordefinierten XML-Syntax „className“ angeben. Wie Sie sehen können, ist es viel einfacher, intuitiver und weniger ausführlich, denselben Code in JSX zu schreiben. Daher verwendet fast die gesamte React-Community JSX, um React-Code zu schreiben.

Was ist JSX? JSX steht für JavaScript-XML. XML ist eine sehr benutzerfreundliche Syntax für Entwickler. JSX erleichtert das Schreiben und Hinzufügen von HTML in React.

Sehen Sie sich den Unterschied zwischen dem Erstellen von Elementen in React und Javascript an. Sie werden feststellen, dass React Ihnen mehr Flexibilität beim Schreiben und Zugreifen auf Code bietet, was das Entwickeln und Debuggen erleichtert.

Reagieren Javascript

const Button = <button onClick={console.log('clicked!')}>Click Me</button>

HTML-DATEI

<button>Klick mich</button>

JS-DATEI

Funktion onClick() {
console.log('angeklickt!');
};
const button = document.getElementById('my-button');
button.addEventListener('click', onClick);

Obwohl JSX es Entwicklern leicht macht, Code zu schreiben, ist es nicht das beste Format, das Browser verstehen können. Aus diesem Grund werden wir es in ein reguläres JavaScript-Format kompilieren, das dem Browser bereitgestellt wird.

Reagieren Sie auf Datenformulare

Reaktionskomponenten haben zwei Arten von Daten:

Requisiten
◦ Requisiten sind Eigenschaften, die von Vorfahren in der Komponentenhierarchie empfangen werden. Sie können nicht verändert oder mutiert werden. Um beispielsweise eine Variable von einer übergeordneten an eine untergeordnete Komponente zu übergeben, können Sie sie als Requisite übergeben.
Zustand
◦ Der Status ist lokal für eine Komponente und kann durch Ereignisse geändert werden. Wenn Sie beispielsweise eine Statusvariable (state.text) haben, kann der Text entsprechend verschiedener Aktionen geändert werden.

HINWEIS: Untergeordnete Komponenten können sowohl die Werte dieses Zustands als auch Ereignisse empfangen, um diesen Zustand durch Requisiten zu aktualisieren

So integrieren Sie React mit Drupal

Zunächst erstellen wir ein benutzerdefiniertes Modul und dann die JSX-Datei.
Lassen Sie uns nun das benutzerdefinierte Drupal-Modul wie unten gezeigt erstellen:
Module/react/react.info.yml erstellen

 web > modules > react > ! react.info.yml 1 name: React 2 type: module 3 description: 'A module for basic React components.' 4 core_version_requirement: *8.7.7 || ^9

Als nächstes erstellen wir die React-Datei wie unten gezeigt. Wir erstellen ein HTML-Markup mit einem H1-Tag, das in der React-App- ID gedruckt wird.

Erstellen Sie module/react/js/src/index.jsx

 web > modules > react > js > src > # index.jsx 1 import React from 'react'; 2 import ReactDOM from 'react-dom'; 3 4 ReactDOM. render( 5 <h1>Hello there - world!</h1>, 6 document. getElementById( ' react—app') 7 );

Zugriff auf die JSX-Datei von Drupal

Damit Drupal nun auf die gerade erstellte JSX-Datei zugreifen und diese verwenden kann, müssen Sie eine JavaScript-Toolchain mit Webpack einrichten.

Auf hoher Ebene konfigurieren wir einen Prozess, der unsere Quell-JavaScript-Dateien wie index.jsx nimmt und sie durch verschiedene Build-Schritte leitet, die letztendlich eine einzelne, optimierte .js -Datei ausgeben. Dieser Build-Schritt ermöglicht es uns, das gesamte React/JavaScript-Ökosystem zu nutzen, während wir an unserem Drupal-Modul oder -Thema arbeiten.

Die grundlegenden Schritte sind:

  • Richten Sie eine Toolchain ein, die Ihre JavaScript-Assets in eine oder mehrere „gebündelte“ JavaScript-Dateien mit einem bekannten Speicherort verarbeitet, der sich nicht ändert
  • Erstellen Sie eine Drupal-Asset-Bibliothek, die auf die gebündelten Assets aus Ihrer Build-Toolchain verweist

Schritt 1: Installieren Sie React, Webpack und Babel

Bevor Sie diese installieren, müssen Sie sicherstellen, dass node und nmp in Ihrer Entwicklungsumgebung bereit sind. React ist die Javascript-Bibliothek. Babel und Webpack sind Compiler, die Sie benötigen, um die .jsx-Datei für den Browser in Javascript umzuwandeln. Babel ist einer der besten Community-Compiler zum Kompilieren von .jsx-Dateien. Um React, Webpack und Babel zu installieren, führen Sie die folgenden Befehle aus dem Stammverzeichnis Ihrer Themenmodule /react/ in Ihrem Terminal aus

 1 # Create a package.json if you don't have one already. 2 npm init -y 3 # Install the required dependencies 4 npm install —-save react react-dom prop—types 5 npm install —-save-dev @babel/core @babel/preset-env @babel/preset-react babel-loader webpack webpack-cli

Schritt 2: Konfigurieren Sie Webpack mit einer webpack.config.js -Datei

Erstellen Sie eine webpack.config.js -Datei im Stammverzeichnis Ihres Moduls: modules/react/webpack.config.js

 1 const path = require('path'); 2 3 const config = { 4 entry: { 5 main: ["./js/src/index.jsx"] 6 }, 7 devtool:'source-map', 8 mode:'development', 9 output: { 10 path: path.resolve(__dirname, "js/dist"), 11 filename: '[name].min.js' 12 }, 13 resolve: { 14 extensions: ['.js', '.jsx'], 15 }, 16 module: { 17 rules: [ 18 { 19 test: /\.jsx?$/, 20 loader: 'babel-loader', 21 exclude: /node_modules/, 22 include: path.join(__dirname, 'js/src'), 23 } 24 ], 25 }, 26 }; 27 28 module.exports = config;

Schritt 3: Konfigurieren Sie Babel mit einer .babelrc -Datei

Stellen Sie eine Konfiguration für Babel bereit, indem Sie eine .babelrc -Datei mit den folgenden leicht verfügbaren Voreinstellungen (die beim Kompilieren des React-Codes verwendet werden) im Stammverzeichnis des Moduls erstellen: modules/react/.babelrc

 web > modules > react > .babelrc >... 1 { 2 "presets": [ 3 "@babel/preset-env", 4 "@babel/preset-react" 5 ] 6 }

Schritt 4: Fügen Sie einige Hilfsskripte zu package.json hinzu

Dies ist erforderlich, um Ihr nmp-Paket auszuführen, da es vor jeder Aktion immer auf die Basisdatei package.json verweist.

 > Debug "scripts": { "build": "webpack", "build:dev": "webpack", "start": “webpack —-watch" },

Schritt 5: Führen Sie build aus, um die jsx- Dateien in die einzelne js -Datei zu kompilieren

Jetzt können wir die JSX-Datei kompilieren.

npm run build (ODER) npm run build:dev

Im Grunde kompiliert dies die Datei gemäß der Konfiguration in der Datei webpack.config und erstellt nun die kompilierte js -Datei im erwähnten Repository js/src/dist .

Schritt 6: Definieren Sie eine Drupal-Asset-Bibliothek

Sie können nun die kompilierte JavaScript-Datei als Drupal-Asset in der Bibliothek ( libraries.yml ) hinzufügen.

 web > modules > react > ! react.libraries.yml 1 react_app: 2 version: 1.0 3 js: 4 js/dist/main.min.js: {minified: true}

Jetzt sind Sie bereit, einige coole React-Komponenten auf Ihrer Drupal-Website zu erstellen.

So sah mein Endergebnis aus (unten). Sie können den React-Block sehen, den ich mit einem H1-Tag „Hello Specbee“ erstellt habe.

Wurzel

Abschließende Gedanken

War das nicht einfach? Stellen Sie beim Erstellen von React-Komponenten in Drupal sicher, dass Sie das React-Dom -Element in Drupal erstellt haben („ react-app “) und hängen Sie immer die Javascript-Datei (die wir aus der React-JSX-Datei kompiliert haben) an die Drupal-Bibliothek an. Gefällt Ihnen, was Sie gerade gelesen haben? Wir bemühen uns, jede Woche wertvolle Inhalte für Sie zu veröffentlichen. Abonnieren Sie unseren wöchentlichen Newsletter, um mit all unseren neuesten Erkenntnissen auf dem Laufenden zu bleiben.