


Beispiel für die Erstellung einer Desktop-Anwendung mit dem Go Wails-Framework
Wie wir alle wissen, ist Go Wird hauptsächlich zum Erstellen von APIs, Web-Backends und CLI-Tools verwendet. Aber das Interessante ist, dass Go an Orten eingesetzt werden kann, die wir nicht erwartet haben.
Zum Beispiel können wir mithilfe des Wails-Frameworks eine Desktop-Anwendung mit Go und Vue.js erstellen.
Dies ist ein neues Framework, noch in der Betaphase, aber ich war überrascht, wie einfach es ist, Anwendungen zu entwickeln und zu erstellen.
Wails bietet die Möglichkeit, Go-Code und Web-Frontend in einer einzigen Binärdatei zu packen. Wails CLI erleichtert Ihnen dies, indem es die Erstellung, Kompilierung und Verpackung von Projekten übernimmt.
Anwendung
Wir werden eine sehr einfache App erstellen, um die CPU-Auslastung meiner Maschine in Echtzeit anzuzeigen. Wenn Sie Zeit haben und Wails mögen, können Sie sich etwas Kreativeres und Komplexeres einfallen lassen.
Installation
Die Wails-CLI kann mit go get
installiert werden. Nach der Installation sollten Sie zum Einrichten den Befehl wails setup
verwenden.
go get github.com/wailsapp/wails/cmd/wails wails setup
Dann lasst uns unser Projekt starten mit cpustats
:
wails init cd cpustats
Unser Projekt umfasst ein Go-Backend und ein Vue.js-Frontend. main.go
wird unser Einstiegspunkt sein, an dem wir alle anderen Abhängigkeiten zusammen mit go.mod
Dateien zu deren Verwaltung einbinden können. Der Ordner frontend
enthält Vue.js-Komponenten, Webpack und CSS.
Konzepte
Es gibt zwei Hauptkomponenten für den Datenaustausch zwischen Backend und Frontend: Bindungen und Ereignisse.
Bindung ist eine einzelne Methode, mit der Sie Ihren Go-Code am Frontend verfügbar machen (binden) können.
Darüber hinaus bietet Wails auch ein einheitliches Ereignissystem, ähnlich dem lokalen Ereignissystem von Javascript. Dies bedeutet, dass jedes von Go oder Javascript gesendete Ereignis von beiden Parteien empfangen werden kann. Daten können zusammen mit jedem Ereignis übergeben werden. Dies ermöglicht Ihnen elegante Dinge wie die Ausführung eines Hintergrundprozesses in Go und die Benachrichtigung des Frontends über alle Aktualisierungen.
Backend
Lassen Sie uns zunächst einen Backend-Teil entwickeln, der die CPU-Auslastung erfasst und diese dann mithilfe der bind
-Methode an das Frontend sendet.
Wir werden ein neues Paket erstellen und einen Typ definieren, den ich dem Frontend zur Verfügung stellen (binden) werde.
pkg/sys/sys.go:
package sys import ( "math" "time" "github.com/shirou/gopsutil/cpu" "github.com/wailsapp/wails" ) // Stats . type Stats struct { log *wails.CustomLogger } // CPUUsage . type CPUUsage struct { Average int `json:"avg"` } // WailsInit . func (s *Stats) WailsInit(runtime *wails.Runtime) error { s.log = runtime.Log.New("Stats") return nil } // GetCPUUsage . func (s *Stats) GetCPUUsage() *CPUUsage { percent, err := cpu.Percent(1*time.Second, false) if err != nil { s.log.Errorf("unable to get cpu stats: %s", err.Error()) return nil } return &CPUUsage{ Average: int(math.Round(percent[0])), } }
Wenn Ihre Struktur eine WailsInit
-Methode hat, ruft Wails diese beim Start auf. Dadurch können Sie vor dem Start der Hauptanwendung einige Initialisierungen durchführen.
Führen Sie das main.go
-Paket in sys
ein und binden Sie die Stats
-Instanz wieder an das Front-End:
package main import ( "github.com/leaanthony/mewn" "github.com/plutov/packagemain/cpustats/pkg/sys" "github.com/wailsapp/wails" ) func main() { js := mewn.String("./frontend/dist/app.js") css := mewn.String("./frontend/dist/app.css") stats := &sys.Stats{} app := wails.CreateApp(&wails.AppConfig{ Width: 512, Height: 512, Title: "CPU Usage", JS: js, CSS: css, Colour: "#131313", }) app.Bind(stats) app.Run() }
Front-end
Wir haben -Instanz, die im Frontend stats
aufgerufen werden kann. Wenn wir die Funktion window.backend.Stats
aufrufen möchten, erhalten wir eine Antwort. GetCPUUsage()
window.backend.Stats.GetCPUUsage().then(cpu_usage => { console.log(cpu_usage); })Um das gesamte Projekt in einer einzigen Binärdatei zu erstellen, sollten wir
ausführen. Dies kann durch Hinzufügen des Flags wails build
erfolgen, um eine debuggbare Version zu erstellen. Es wird eine Binärdatei mit einem Namen erstellt, der mit dem Projektnamen übereinstimmt. -d
wails build -d ./cpustatsEreignisse Wir verwenden die Bindung, um den CPU-Nutzungswert an das Frontend zu senden. Jetzt versuchen wir einen anderen Ansatz: Erstellen wir einen Timer im Hintergrund, der im Hintergrund verwendet wird die Ereignismethode CPU-Auslastungswert senden. Anschließend können wir die Veranstaltung in Javascript abonnieren. In Go können wir dies in der Funktion
tun: WailsInit
func (s *Stats) WailsInit(runtime *wails.Runtime) error { s.log = runtime.Log.New("Stats") go func() { for { runtime.Events.Emit("cpu_usage", s.GetCPUUsage()) time.Sleep(1 * time.Second) } }() return nil }In Vue.js können wir dieses Ereignis abonnieren, wenn die Komponente gemountet wird (oder irgendwo anders):
mounted: function() { wails.events.on("cpu_usage", cpu_usage => { if (cpu_usage) { console.log(cpu_usage.avg); } }); }MessleisteEs wäre schön, eine Messleiste zu haben, um die CPU-Auslastung anzuzeigen, daher werden wir eine Abhängigkeit von Drittanbietern einbeziehen, verwenden Sie einfach
:npm
npm install --save apexcharts npm install --save vue-apexchartsund importieren Sie dann die
-Datei: main.js
import VueApexCharts from 'vue-apexcharts' Vue.use(VueApexCharts) Vue.component('apexchart', VueApexCharts)Jetzt können wir apexccharts verwenden, um die CPU-Auslastung anzuzeigen und den Wert der Komponente zu aktualisieren, indem wir Ereignisse vom Backend empfangen:
<template> <apexchart></apexchart> </template> <script> export default { data() { return { series: [0], options: { labels: ['CPU Usage'] } }; }, mounted: function() { wails.events.on("cpu_usage", cpu_usage => { if (cpu_usage) { this.series = [ cpu_usage.avg ]; } }); } }; </script>Um Stile zu ändern können wir
direkt ändern oder in Komponenten definieren. src/assets/css/main
wails build -d
./cpustats
Go Tutorial“
Das obige ist der detaillierte Inhalt vonBeispiel für die Erstellung einer Desktop-Anwendung mit dem Go Wails-Framework. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

GoHandlesInterfacesAndTypeassertionSeffective, EnhancingCodeFlexibilityandrobustness.1) TypenSerionsallowruntimetypeCking, AsseenWithThapeInterfaceandCircletype.2) TypeSwitcheshandlemultipletypesiepy, nützlich, nützlich, nützlich

GO -Sprachfehlerhandhabung wird flexibler und durch Fehler lesbarer. IS und Fehler.as Funktionen. 1.Erors.IS wird verwendet, um zu prüfen, ob der Fehler dem angegebenen Fehler entspricht und für die Verarbeitung der Fehlerkette geeignet ist. 2.Errors.as können nicht nur den Fehlertyp überprüfen, sondern auch den Fehler in einen bestimmten Typ konvertieren, der zum Extrahieren von Fehlerinformationen geeignet ist. Die Verwendung dieser Funktionen kann die Fehlerbehandlungslogik der Fehlerbehandlung vereinfachen, aber auf die korrekte Abgabe von Fehlerketten achten und eine übermäßige Abhängigkeit vermeiden, um die Komplexität der Code zu verhindern.

TomakegoapplicationsRunfasterandmorefficenty, UseProfilingTools, LeveragEconcurrency und Managemoryeffectiv.1) UsePPRofforCpuandMemoryProfilingToidentifyBottlenecks.2) NutzungsgoroutinesandchannelstoparallelizeTakesAmproveProveperance.3) Implementierung

GO'SfutureIsBrightWithTrends aseimpultedTooling, Generika, Cloud-Nativadoption, PerformanceNHancements und Webassemblyintegration, ButchalenGesincludemaintainingImplication undImProventerrorhandling.

GoroutinesareFunctionsOrtheThatrunConcruncurentoingo, aktivieren, dass und leuchtet die Wutzehnung

ThepurpleTheinitfunctioningoinitializeVariables, Setupconfigurationen, orperformN -nötiger SetupBeforeThemaNFunctionexecutes

GointerfacesAremethodSignaturesSetShattypesMustImplement, EnablingPolymorphism mit der Outinheritanceforcleaner, modularCode.

Verwenden Sie die Funktion resocal (), um sich von Panik zu erholen. Die spezifischen Methoden sind: 1) Verwenden Sie Recover (), um Panik in der Aufschubfunktion zu erfassen, um Programmabstürze zu vermeiden. 2) detaillierte Fehlerinformationen zum Debuggen aufzeichnen; 3) entscheiden, ob die Programmausführung auf der Grundlage der spezifischen Situation wieder aufgenommen werden soll; 4) Verwenden Sie mit Vorsicht, um die Leistung zu vermeiden.


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

SecLists
SecLists ist der ultimative Begleiter für Sicherheitstester. Dabei handelt es sich um eine Sammlung verschiedener Arten von Listen, die häufig bei Sicherheitsbewertungen verwendet werden, an einem Ort. SecLists trägt dazu bei, Sicherheitstests effizienter und produktiver zu gestalten, indem es bequem alle Listen bereitstellt, die ein Sicherheitstester benötigen könnte. Zu den Listentypen gehören Benutzernamen, Passwörter, URLs, Fuzzing-Payloads, Muster für vertrauliche Daten, Web-Shells und mehr. Der Tester kann dieses Repository einfach auf einen neuen Testcomputer übertragen und hat dann Zugriff auf alle Arten von Listen, die er benötigt.

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

EditPlus chinesische Crack-Version
Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion

PHPStorm Mac-Version
Das neueste (2018.2.1) professionelle, integrierte PHP-Entwicklungstool

DVWA
Damn Vulnerable Web App (DVWA) ist eine PHP/MySQL-Webanwendung, die sehr anfällig ist. Seine Hauptziele bestehen darin, Sicherheitsexperten dabei zu helfen, ihre Fähigkeiten und Tools in einem rechtlichen Umfeld zu testen, Webentwicklern dabei zu helfen, den Prozess der Sicherung von Webanwendungen besser zu verstehen, und Lehrern/Schülern dabei zu helfen, in einer Unterrichtsumgebung Webanwendungen zu lehren/lernen Sicherheit. Das Ziel von DVWA besteht darin, einige der häufigsten Web-Schwachstellen über eine einfache und unkomplizierte Benutzeroberfläche mit unterschiedlichen Schwierigkeitsgraden zu üben. Bitte beachten Sie, dass diese Software
