Αναγνώστες σαν εσάς βοηθούν στην υποστήριξη του MUO. Όταν κάνετε μια αγορά χρησιμοποιώντας συνδέσμους στον ιστότοπό μας, ενδέχεται να κερδίσουμε μια προμήθεια θυγατρικών. Διαβάστε περισσότερα.

Το WebAssembly είναι μια από τις σύγχρονες τεχνολογίες που έχουν σχεδιαστεί για την εκτέλεση περισσότερων γλωσσών στο πρόγραμμα περιήγησης με διαλειτουργικότητα Javascript.

Το WebAssembly (WASM) είναι μια ανεξάρτητη πλατφόρμα, δυαδική μορφή εντολών για εικονικές μηχανές που βασίζονται σε στοίβα και έχουν σχεδιαστεί ως ένας φορητός στόχος μεταγλώττισης για γλώσσες προγραμματισμού που θα εκτελούνται σε περιβάλλοντα ενεργοποίησης (δηλαδή, ο ιστός και ο διακομιστής εφαρμογές).

Με το WASM, μπορείτε να εκτελέσετε πολλές γλώσσες προγραμματισμού, συμπεριλαμβανομένης της Go, στο πρόγραμμα περιήγησής σας και να αξιοποιήσετε τις δυνατότητες της γλώσσας. Επίσης, διαλειτουργεί με Javascript στον Ιστό.

Ξεκινώντας με το WebAssembly in Go

Το Go παρέχει πρώτης τάξεως υποστήριξη για τη χρήση του WebAssembly στις εφαρμογές Go σας, χρειάζεται μόνο να κάνετε μερικές διαμορφώσεις και να μεταγλωττίσετε τον κώδικα Go στο WebAssembly.

instagram viewer

Θα χρειαστεί να κάνετε μερικές διαμορφώσεις για να μεταφέρετε τον κώδικα Go σας στο WebAssembly. Θα πρέπει να αλλάξετε την αρχιτεκτονική Go GOARCH μεταβλητή περιβάλλοντος σε wasm και το λειτουργικό σύστημα Go GOOS μεταβλητή σε js.

Εκτελέστε αυτήν την εντολή στο τερματικό του καταλόγου εργασίας σας για να κάνετε αυτές τις διαμορφώσεις.

Ορίστε GOARCH=wasm GOOS=js 

Το επόμενο βήμα είναι να μεταφέρετε τον κώδικα Go σας σε ένα WebAssembly .wasm αρχείο. Εκτελέστε αυτήν την εντολή για να μεταφράσετε το δικό σας main.go αρχείο σε ένα αρχείο με όνομα lib.wasm

πηγαίνω χτίζω -ο lib.wasm κύριος.go

Κατά την εκτέλεση της εντολής, θα βρείτε ένα lib.wasm στον κατάλογο εργασίας σας.

Πρέπει να αντιγράψετε το αρχείο WebAssembly που συνοδεύει την εγκατάσταση Go στον κατάλογο εργασίας σας για να εκτελέσετε το αρχείο WebAssembly με το NodeJS σε μια ιστοσελίδα.

cp "$(go env GOROOT)/misc/wasm/wasm_exec.js" .

Η εντολή αντιγράφει το wasm_exec.js αρχείο στον κατάλογο εργασίας σας και χρησιμεύει ως σημείο εισόδου στην αίτησή σας.

Τώρα μπορείτε να χρησιμοποιήσετε το wasm_exec.js script για να εκτελέσετε τα αρχεία WASM με το Go and make DOM API κλήσεις.

κόμβος wasm_exec.js main.wasm

Εκκίνηση ενός διακομιστή Web για τη φιλοξενία του ιστότοπου

Προσθέστε αυτόν τον κώδικα από τους συντάκτες Go σε ένα αρχείο HTML στον κατάλογο εργασίας σας για να δημιουργήσετε μια ροή δεδομένων WebAssembly με το instantiateStreaming μέθοδος.



Πνευματικά δικαιώματα 2018 The Go Authors. Με την επιφύλαξη παντός δικαιώματος.
Η χρήση αυτού του πηγαίου κώδικα διέπεται από μια άδεια τύπου BSD
που βρίσκεται στο αρχείο LICENSE.



"utf-8" />
Πήγαινε καλά





Ο κώδικας HTML προέρχεται από τους Go Authors, για τη δημιουργία μιας ροής WebAssembly που συνδέει τον κώδικα Go σας με την ιστοσελίδα.

Εκκίνηση ενός διακομιστή Web για την εκτέλεση της σελίδας

Θα ρυθμίστε τον διακομιστή με το http πακέτο. Εισαγάγετε το http πακέτο και το κούτσουρο πακέτο για την καταγραφή πιθανών σφαλμάτων στην κονσόλα.

εισαγωγή (
"κούτσουρο"
"net/http"
)

Μπορείτε να δηλώσετε μεταβλητές για τη διεύθυνση διακομιστή και τον κατάλογο των αρχείων που θέλετε να εμφανίσετε στη διεύθυνση.

var (
serverAddr = ":8080"
κατάλογος = "."
)

Μπορείτε να χρησιμοποιήσετε το FileServer μέθοδος του http πακέτο για την προβολή αρχείων σε έναν καθορισμένο κατάλογο. ο FileServer μέθοδος παίρνει στον κατάλογο και επιστρέφει μια παρουσία διακομιστή αρχείων.

funcκύριος() {
serveFiles := http. FileServer (http. Σκηνοθεσία (κατάλογος))
αν λάθος := http. ListenAndServe (serverAddr, serveFiles); λάθος!= μηδέν {
κούτσουρο. Fatalln (λάθος)
}
}

Στο κύριος Συνάρτηση, δηλώσατε μια μεταβλητή παρουσίας διακομιστή αρχείων για την εξυπηρέτηση των αρχείων στον ριζικό κατάλογο. ο ListenAndServe μέθοδος εξυπηρετεί τα αρχεία στον καθορισμένο κατάλογο στην καθορισμένη θύρα.

Λειτουργίες WebAssembly στο Go

Το Go παρέχει λειτουργικότητα για κλήση συναρτήσεων JS και αλληλεπίδραση με το DOM στο syscall/js πακέτο.

ο js Το πακέτο παρέχει πρόσβαση σε περιβάλλοντα κεντρικού υπολογιστή WebAssembly στο js/wasm αρχιτεκτονική. Θα χρειαστεί να ρυθμίσετε το περιβάλλον ανάπτυξής σας GOARCH=wasm GOOS=js για πρόσβαση και χρήση του πακέτου.

Μπορείτε να χρησιμοποιήσετε τις διάφορες μεθόδους στο πακέτο για να αλληλεπιδράσετε με την ιστοσελίδα σας. Δείτε πώς μπορείτε να καταχωρίσετε συναρτήσεις με το js πακέτο.

// ορισμός συνάρτησης
funcΤυπώνω(αυτό js. Τιμή, i []js. Αξία)διεπαφή{} {
ΕΠΙΣΤΡΟΦΗ js. ValueOf (i[:])
}

ο Τυπώνω Η λειτουργία κατά την εγγραφή ως συνάρτηση επανάκλησης θα εξάγει τα δεδομένα που διαβιβάζονται στη λειτουργία στην κονσόλα του προγράμματος περιήγησης.

Μπορείτε να καταχωρίσετε λειτουργίες επανάκλησης με το Σειρά μέθοδος του Παγκόσμια μέθοδος του js πακέτο. ο Σειρά μέθοδος λαμβάνει το αναγνωριστικό συνάρτησης και ένα παράδειγμα συνάρτησης επανάκλησης.

funcRegister CallbackFunctions() {
js. Global().Set("Τυπώνω", js. FuncOf(Τυπώνω))
}

ο Register CallbackFunctions μέθοδος καταχωρεί το Τυπώνω λειτουργεί ως λειτουργία επανάκλησης που μπορείτε να χρησιμοποιήσετε στην κονσόλα του προγράμματος περιήγησης.

Το WebAssembly είναι μια πειραματική δυνατότητα σε πολλές γλώσσες, συμπεριλαμβανομένου του Go

Οι δυνατότητες WebAssembly είναι σχετικά νέες σε πολλές γλώσσες, ειδικά αφού η γλώσσα έγινε πρόσφατα πρότυπο του W3C. ο js Το πακέτο είναι πειραματικό και το πακέτο εξαιρείται από την υπόσχεση συμβατότητας Go.