AG-Grid ist eine leistungsstarke JavaScript-Datengitterbibliothek, die sich ideal zum Erstellen dynamischer Hochleistungstabellen mit Funktionen wie Sortieren, Filtern und Paginierung eignet. In diesem Artikel erstellen wir eine API in Go zur Unterstützung von AG-Grid, die effiziente serverseitige Datenoperationen ermöglicht, einschließlich Filterung, Sortierung und Paginierung. Durch die Integration von AG-Grid mit der Go-API entwickeln wir eine robuste Lösung, die eine reibungslose Leistung auch bei der Arbeit mit großen Datensätzen gewährleistet.
Voraussetzungen
- Gehen Sie 1,21
- MySQL
Setup-Projekt
Einrichten der Go-Projektabhängigkeiten.
go mod init app go get github.com/gin-gonic/gin go get gorm.io/gorm go get gorm.io/driver/mysql go get github.com/joho/godotenv
Erstellen Sie eine Testdatenbank mit dem Namen „example“ und führen Sie die Datei „database.sql“ aus, um die Tabelle und die Daten zu importieren.
Projektstruktur
├─ .env ├─ main.go ├─ config │ └─ db.go ├─ controllers │ └─ product_controller.go ├─ models │ └─ product.go ├─ public │ └─ index.html └─ router └─ router.go
Projektdateien
.env
Diese Datei enthält die Datenbankverbindungsinformationen.
DB_HOST=localhost DB_PORT=3306 DB_DATABASE=example DB_USER=root DB_PASSWORD=
db.go
Diese Datei richtet die Datenbankverbindung mithilfe von GORM ein. Es deklariert eine globale Variable DB, um die Datenbankverbindungsinstanz zur späteren Verwendung in unserer Anwendung zu speichern.
package config import ( "fmt" "os" "github.com/joho/godotenv" "gorm.io/driver/mysql" "gorm.io/gorm" "gorm.io/gorm/schema" ) var DB *gorm.DB func SetupDatabase() { godotenv.Load() connection := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8mb4&parseTime=true", os.Getenv("DB_USER"), os.Getenv("DB_PASSWORD"), os.Getenv("DB_HOST"), os.Getenv("DB_PORT"), os.Getenv("DB_DATABASE")) db, _ := gorm.Open(mysql.Open(connection), &gorm.Config{NamingStrategy: schema.NamingStrategy{SingularTable: true}}) DB = db }
router.go
Diese Datei richtet das Routing für eine Gin-Webanwendung ein. Es initialisiert einen Router für eine DataTables-API und stellt eine statische index.html-Datei unter der Stamm-URL bereit.
package router import ( "app/controllers" "github.com/gin-gonic/gin" ) func SetupRouter() { productController := controllers.ProductController{} router := gin.Default() router.StaticFile("/", "./public/index.html") router.GET("/api/products", productController.Index) router.Run() }
Produkt.go
Diese Datei definiert das Produktmodell für die Anwendung.
package models type Product struct { Id int Name string Price float64 }
product_controller.go
Diese Datei definiert eine Funktion zur Verarbeitung eingehender Anfragen und zur Rückgabe der DataTables-Daten.
package controllers import ( "app/config" "app/models" "net/http" "strconv" "github.com/gin-gonic/gin" ) type ProductController struct { } func (con *ProductController) Index(c *gin.Context) { size, _ := strconv.Atoi(c.DefaultQuery("length", "10")) start, _ := strconv.Atoi(c.Query("start")) order := "id" if c.Query("order[0][column]") != "" { order = c.Query("columns[" + c.Query("order[0][column]") + "][data]") } direction := c.DefaultQuery("order[0][dir]", "asc") var products []models.Product query := config.DB.Model(&products) var recordsTotal, recordsFiltered int64 query.Count(&recordsTotal) search := c.Query("search[value]") if search != "" { search = "%" + search + "%" query.Where("name like ?", search) } query.Count(&recordsFiltered) query.Order(order + " " + direction). Offset(start). Limit(size). Find(&products) c.JSON(http.StatusOK, gin.H{"draw": c.Query("draw"), "recordsTotal": recordsTotal, "recordsFiltered": recordsFiltered, "data": products}) }
Die Datei „product_controller.go“ definiert einen Controller zum Verwalten produktbezogener API-Anfragen in einer Go-Anwendung mithilfe des Gin-Frameworks. Es verfügt über eine Index-Methode, die eine paginierte Liste von Produkten basierend auf Abfrageparametern für Paginierung, Sortierung und Suche abruft. Die Methode extrahiert Parameter für die Paginierung, erstellt eine Abfrage zum Abrufen von Produkten aus der Datenbank und wendet eine Filterung an, wenn ein Suchbegriff angegeben wird. Nach der Zählung der gesamten übereinstimmenden Produkte werden die Ergebnisse sortiert und begrenzt, bevor eine JSON-Antwort mit den Produktdaten und der Gesamtzahl zurückgegeben wird, was die Integration mit Frontend-Anwendungen erleichtert.
main.go
Diese Datei ist der Haupteinstiegspunkt unserer Anwendung. Es wird die Gin-Webanwendung erstellt und eingerichtet.
package main import ( "app/config" "app/router" ) func main() { config.SetupDatabase() router.SetupRouter() }
index.html
<script src="https://cdn.jsdelivr.net/npm/ag-grid-community/dist/ag-grid-community.min.js"></script> <div> <p>The index.html file sets up a web page that uses the AG-Grid library to display a dynamic data grid for products. It includes a grid styled with the AG-Grid theme and a JavaScript section that constructs query parameters for pagination, sorting, and filtering. The grid is configured with columns for ID, Name, and Price, and it fetches product data from an API endpoint based on user interactions. Upon loading, the grid is initialized, allowing users to view and manipulate the product list effectively.</p> <h2> Run project </h2> <pre class="brush:php;toolbar:false">go run main.go
Öffnen Sie den Webbrowser und gehen Sie zu http://localhost:8080
Sie finden diese Testseite.
Testen
Seitengrößentest
Ändern Sie die Seitengröße, indem Sie im Dropdown-Menü „Seitengröße“ den Wert 50 auswählen. Sie erhalten 50 Datensätze pro Seite und die letzte Seite ändert sich von 5 auf 2.
Sortiertest
Klicken Sie auf die Überschrift der ersten Spalte. Sie werden sehen, dass die ID-Spalte in absteigender Reihenfolge sortiert wird.
Suchtest
Geben Sie „Nein“ in das Suchtextfeld der Spalte „Name“ ein und Sie sehen die gefilterten Ergebnisdaten.
Abschluss
Zusammenfassend lässt sich sagen, dass wir AG-Grid effektiv mit einer Go-API integriert haben, um eine robuste und effiziente Daten-Grid-Lösung zu schaffen. Durch die Nutzung der Backend-Funktionen von Go haben wir AG-Grid in die Lage versetzt, serverseitige Filterung, Sortierung und Paginierung durchzuführen und so eine reibungslose Leistung auch bei großen Datensätzen sicherzustellen. Diese Integration optimiert nicht nur die Datenverwaltung, sondern verbessert auch das Benutzererlebnis durch dynamische, reaktionsfähige Tabellen im Frontend. Durch die harmonische Zusammenarbeit von AG-Grid und Go haben wir ein skalierbares und leistungsstarkes Grid-System aufgebaut, das sich gut für reale Anwendungen eignet.
Quellcode: https://github.com/stackpuz/Example-AG-Grid-Go
Erstellen Sie in wenigen Minuten eine CRUD-Web-App: https://stackpuz.com
Das obige ist der detaillierte Inhalt vonErstellen Sie eine API für AG-Grid mit Go. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Golangissidealforperformance-kritische Anpassung und Konzernprogrammierung, whilepythonexcelsindatascience, RapidPrototyping, Andverseility) Forhoigh-Performanceneeds, Wockengolangduetoitseffizienz und -Konkosen-Feature.2) fürData-drivert

Golang erreicht eine effiziente Parallelität über Goroutine und Kanal: 1. Goroutine ist ein leichter Thread, der mit dem GO -Keyword begonnen wird. 2.Channel wird zur sicheren Kommunikation zwischen Goroutinen verwendet, um Rennbedingungen zu vermeiden. 3. Das Nutzungsbeispiel zeigt die grundlegende und fortgeschrittene Verwendung; 4. Häufige Fehler sind Deadlocks und Datenwettbewerb, die durch Gorun-Race erkannt werden können. 5. Leistungsoptimierung schlägt vor, die Verwendung von Kanal zu verringern, die Anzahl der Goroutinen vernünftigerweise festzulegen und Sync.pool zum Verwalten von Speicher zu verwenden.

Golang eignet sich besser für Systemprogramme und hohe Parallelitätsanwendungen, während Python besser für Datenwissenschaft und schnelle Entwicklung geeignet ist. 1) Golang wird von Google entwickelt, das statisch tippt, die Einfachheit und Effizienz betont und für hohe Parallelitätsszenarien geeignet ist. 2) Python wird von Guidovan Rossum erstellt, dynamisch typisiert, prägnant Syntax, breite Anwendung, geeignet für Anfänger und Datenverarbeitung.

Golang ist in Bezug auf Leistung und Skalierbarkeit besser als Python. 1) Golangs Kompilierungseigenschaften und effizientes Parallelitätsmodell machen es in hohen Parallelitätsszenarien gut ab. 2) Python wird als interpretierte Sprache langsam ausgeführt, kann aber die Leistung durch Tools wie Cython optimieren.

Go Language hat einzigartige Vorteile bei gleichzeitiger Programmierung, Leistung, Lernkurve usw.: 1. Die gleichzeitige Programmierung wird durch Goroutine und Kanal realisiert, was leicht und effizient ist. 2. Die Kompilierungsgeschwindigkeit ist schnell und die Betriebsleistung liegt nahe an der der C -Sprache. 3. Die Grammatik ist prägnant, die Lernkurve ist glatt und das Ökosystem ist reich.

Die Hauptunterschiede zwischen Golang und Python sind Parallelitätsmodelle, Typsysteme, Leistung und Ausführungsgeschwindigkeit. 1. Golang verwendet das CSP -Modell, das für hohe gleichzeitige Aufgaben geeignet ist. Python verlässt sich auf Multi-Threading und Gil, was für I/O-intensive Aufgaben geeignet ist. 2. Golang ist ein statischer Typ und Python ist ein dynamischer Typ. 3.. Golang kompilierte Sprachausführungsgeschwindigkeit ist schnell und Python interpretierte die Sprachentwicklung schnell.

Golang ist in der Regel langsamer als C, aber Golang hat mehr Vorteile für die gleichzeitige Programmier- und Entwicklungseffizienz: 1) Golangs Müllsammlung und Parallelitätsmodell macht es in hohen Parallelitätsszenarien gut ab. 2) C erhält eine höhere Leistung durch das manuelle Speichermanagement und die Hardwareoptimierung, weist jedoch eine höhere Komplexität der Entwicklung auf.

Golang wird häufig in Cloud -Computing und DevOps verwendet, und seine Vorteile liegen in Einfachheit, Effizienz und gleichzeitigen Programmierfunktionen. 1) Beim Cloud Computing behandelt Golang effizient gleichzeitige Anforderungen über Goroutine- und Kanalmechanismen. 2) In DevOps machen Golangs schnelle Zusammenstellung und plattformübergreifende Funktionen die erste Wahl für Automatisierungswerkzeuge.


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

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

MantisBT
Mantis ist ein einfach zu implementierendes webbasiertes Tool zur Fehlerverfolgung, das die Fehlerverfolgung von Produkten unterstützen soll. Es erfordert PHP, MySQL und einen Webserver. Schauen Sie sich unsere Demo- und Hosting-Services an.

SublimeText3 Linux neue Version
SublimeText3 Linux neueste Version

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Herunterladen der Mac-Version des Atom-Editors
Der beliebteste Open-Source-Editor

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)