Heim > Web-Frontend > js-Tutorial > Datenanzeige in Gatsby

Datenanzeige in Gatsby

Mary-Kate Olsen
Freigeben: 2024-09-21 14:30:42
Original
1013 Leute haben es durchsucht

Data Display in Gatsby

Gatsby ist ein leistungsstarker statischer Site-Generator auf Basis von React, der es Entwicklern ermöglicht, schnelle und skalierbare Websites und Anwendungen zu erstellen. Einer der Schlüsselaspekte beim Aufbau effektiver Websites ist die effiziente Anzeige von Daten für Benutzer. In Gatsby kann die Datenanzeige mithilfe einer Kombination aus GraphQL, React-Komponenten und Datenquellen von Drittanbietern wie Headless-CMS, APIs und lokalen Dateien erreicht werden.

In diesem Artikel untersuchen wir den Prozess des Abrufens und Anzeigens von Daten in einer Gatsby-Anwendung und konzentrieren uns dabei auf die wichtigsten Prinzipien, Strategien und Best Practices für die effektive Darstellung von Daten.

1. Gatsbys Datenschicht verstehen

Gatsbys Datenschicht basiert auf GraphQL, das als Abfragesprache fungiert, die es Entwicklern ermöglicht, genau die Daten anzufordern, die sie benötigen. Gatsby lässt sich tief in GraphQL integrieren, sodass es einfach ist, Daten aus verschiedenen Quellen wie Markdown-Dateien, JSON-Dateien oder externen APIs abzurufen und in React-Komponenten anzuzeigen.

Die Schritte zum Anzeigen von Daten in Gatsby umfassen normalerweise:

  • Daten von einer externen oder internen Quelle abrufen
  • Strukturieren der Daten mithilfe von GraphQL-Abfragen
  • Anzeigen der Daten mithilfe von React-Komponenten

2. Einrichten von GraphQL-Abfragen in Gatsby

Gatsby verfügt über eine integrierte GraphQL-Ebene, die Ihnen den einfachen Zugriff auf Ihre Datenquellen ermöglicht. Sie können GraphQL-Abfragen verwenden, um Daten zu extrahieren aus:

  • Lokale Dateien wie Markdown oder JSON
  • CMS-Plattformen wie Contentful, Strapi oder WordPress
  • APIs und Datenbanken

Beispiel 1: Markdown-Daten abfragen

Angenommen, Sie erstellen einen Blog und haben Ihre Beiträge in Markdown-Dateien geschrieben. Sie können die Markdown-Dateien mit dem Gatsby-Transformer-Remark-Plugin von Gatsby abfragen und den Inhalt in Ihren React-Komponenten anzeigen.

export const query = graphql`
  query BlogPostQuery {
    allMarkdownRemark {
      edges {
        node {
          frontmatter {
            title
            date
          }
          excerpt
        }
      }
    }
  }
`
Nach dem Login kopieren

Sie können dann die abgerufenen Blogbeiträge in Ihrer Komponente mit JSX rendern:

const Blog = ({ data }) => (
  <div>
    {data.allMarkdownRemark.edges.map(({ node }) => (
      <div key="{node.id}">
        <h2>{node.frontmatter.title}</h2>
        <p>{node.excerpt}</p>
        <small>{node.frontmatter.date}</small>
      </div>
    ))}
  </div>
)
Nach dem Login kopieren

Beispiel 2: Abfragen von Daten aus CMS (Contentful)

Wenn Sie ein Headless-CMS wie Contentful verwenden, können Sie Ihre Daten abfragen, indem Sie das Plugin „gatsby-source-contentful“ installieren, das Gatsby mit der API von Contentful integriert. Hier ist ein Beispiel für das Abrufen von Blogbeiträgen von Contentful:

export const query = graphql`
  query ContentfulBlogPostQuery {
    allContentfulBlogPost {
      edges {
        node {
          title
          publishedDate(formatString: "MMMM Do, YYYY")
          body {
            childMarkdownRemark {
              excerpt
            }
          }
        }
      }
    }
  }
`
Nach dem Login kopieren

Sie können die Daten jetzt ähnlich wie mit Markdown rendern:

const Blog = ({ data }) => (
  <div>
    {data.allContentfulBlogPost.edges.map(({ node }) => (
      <div key="{node.id}">
        <h2>{node.title}</h2>
        <p>{node.body.childMarkdownRemark.excerpt}</p>
        <small>{node.publishedDate}</small>
      </div>
    ))}
  </div>
)
Nach dem Login kopieren

3. Rendern externer Daten über APIs

Während die statischen Datenquellen von Gatsby (z. B. Markdown, CMS) großartig sind, kann es Fälle geben, in denen Sie externe Daten dynamisch von APIs abrufen müssen. Sie können den useEffect-Hook in React verwenden, um Daten abzurufen und auf der Clientseite anzuzeigen. So können Sie beispielsweise Daten von einer externen API wie einem REST-Endpunkt oder einem GraphQL-Dienst abrufen:

import React, { useEffect, useState } from "react";

const DataDisplay = () => {
  const [data, setData] = useState([]);

  useEffect(() => {
    // Fetch data from an external API
    fetch('https://api.Datenanzeige in Gatsby.com/data')
      .then(response => response.json())
      .then(result => setData(result))
      .catch(error => console.error('Error fetching data:', error));
  }, []);

  return (
    <div>
      {data.map(item => (
        <div key="{item.id}">
          <h2>{item.name}</h2>
          <p>{item.description}</p>
        </div>
      ))}
    </div>
  );
};

export default DataDisplay;
Nach dem Login kopieren

4. Optimierung der Datenanzeige mit Gatsby

Gatsby bietet mehrere Möglichkeiten, die Datenanzeige zu optimieren und die Leistung zu steigern:

Pagination

Bei der Anzeige großer Datensätze ist es wichtig, die Daten zu paginieren, um die Ladezeiten der Seiten zu verbessern und den Inhalt besser verwaltbar zu machen. Mit der createPages-API von Gatsby können paginierte Seiten dynamisch generiert werden.

const Blog = ({ pageContext, data }) => {
  const { currentPage, numPages } = pageContext;

  return (
    <div>
      {data.allMarkdownRemark.edges.map(({ node }) => (
        <div key="{node.id}">
          <h2>{node.frontmatter.title}</h2>
          <p>{node.excerpt}</p>
        </div>
      ))}

      <pagination currentpage="{currentPage}" numpages="{numPages}"></pagination>
    </div>
  );
};
Nach dem Login kopieren

Lazy Loading

Lazy Loading ist eine Technik, die das Laden nicht wesentlicher Ressourcen verzögert und so die Leistung verbessert. Beispielsweise kann Gatsbys Gatsby-Image Bilder optimieren und React.lazy oder dynamische Importe können das Laden von Komponenten verzögern.

import { LazyLoadImage } from 'react-lazy-load-image-component';

<lazyloadimage alt="Datenanzeige in Gatsby" height="{300}" effect="blur" src="path/to/image.jpg"></lazyloadimage>
Nach dem Login kopieren

Statische Site-Generierung

Der Build-Prozess von Gatsby rendert Seiten vorab in statisches HTML, was die Leistung erheblich verbessert. Es ermöglicht Ihnen jedoch auch, dynamische Inhalte zur Laufzeit mithilfe des clientseitigen Renderings abzurufen und einzufügen.

5. Datenvisualisierung mit Gatsby

Um Daten effektiv anzuzeigen, sind manchmal Visualisierungen wie Diagramme und Grafiken erforderlich. Sie können Datenvisualisierungsbibliotheken wie Chart.js oder D3.js in Ihr Gatsby-Projekt integrieren, um visuelle Datendarstellungen zu rendern.

import { Line } from "react-chartjs-2";

const data = {
  labels: ['January', 'February', 'March', 'April', 'May'],
  datasets: [
    {
      label: 'Sales',
      data: [65, 59, 80, 81, 56],
      fill: false,
      backgroundColor: 'rgb(75, 192, 192)',
      borderColor: 'rgba(75, 192, 192, 0.2)',
    },
  ],
};

const MyChart = () => (
  <div>
    <h2>Sales Over Time</h2>
    <line data="{data}"></line>
  </div>
);
Nach dem Login kopieren

Abschluss

Das Anzeigen von Daten in Gatsby ist dank der Integration mit GraphQL und seiner React-basierten Architektur ein flexibler und effizienter Prozess. Unabhängig davon, ob Sie Daten aus lokalen Dateien, CMS oder APIs abrufen, bietet Gatsby eine solide Grundlage für die Erstellung leistungsstarker Webanwendungen mit umfassenden Datenanzeigefunktionen. Durch die Implementierung von Paginierung, Lazy Loading und anderen Optimierungstechniken können Sie sicherstellen, dass Ihre Gatsby-Site auch bei der Verarbeitung großer Datenmengen schnell und reaktionsfähig bleibt.

Das obige ist der detaillierte Inhalt vonDatenanzeige in Gatsby. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage