Το WebAssembly (WASM) είναι μια φορητή μορφή δυαδικού κώδικα χαμηλού επιπέδου που εκτελείται σε σύγχρονα προγράμματα περιήγησης, όπως και η JavaScript. Στην πραγματικότητα, το WebAssembly είναι επίσης διαλειτουργικό με JavaScript. Μπορείτε να μεταφέρετε τον περισσότερο πηγαίο κώδικα του προγράμματος στο WebAssembly και να το εκτελέσετε στο πρόγραμμα περιήγησης με ή χωρίς JavaScript.
Το Rust είναι γρήγορο, καθιστώντας τη γλώσσα βιώσιμη επιλογή για τη δημιουργία προγραμμάτων WebAssembly. Υπάρχουν πολλές βιβλιοθήκες και πλαίσια Rust που θα σας βοηθήσουν, με υποστήριξη για τα εργαλεία που χρησιμοποιείτε για τη δημιουργία εφαρμογών ιστού.
1. Η βιβλιοθήκη Sycamore
Φίκος είναι ένα γρήγορο, εργονομικό και διαισθητικό αντιδραστικό πλαίσιο τύπου SolidJS. Μπορείτε να το χρησιμοποιήσετε για να δημιουργήσετε εφαρμογές web στο Rust που αξιοποιούν τη δύναμη του WebAssembly. Το Sycamore παρέχει το μεγαλύτερο μέρος της λειτουργικότητας που θα χρειαστείτε για να δημιουργήσετε μια διεπαφή εφαρμογής ιστού στο Rust, επομένως δεν θα χρειαστεί να γράψετε JavaScript.
Το Sycamore παρέχει επίσης διαλειτουργικότητα δρομολογητή και JavaScript μέσω Wasm-Bindgen χρησιμοποιώντας JS-sys ή Web-Sys. Το έργο σκοπεύει να κυκλοφορήσει σύντομα τη δοκιμή και τη λειτουργικότητα CSS.
Για να χρησιμοποιήσετε το Sycamore, θα χρειαστείτε μια πρόσφατη έκδοση του Rust—the wasm32-άγνωστος-άγνωστος στόχος. Θα χρειαστείτε επίσης το Trunk για να δημιουργήσετε και να ομαδοποιήσετε την εφαρμογή σας. Δεδομένου ότι το Sycamore είναι νέο, θα είναι επικίνδυνο να χρησιμοποιήσετε τη βιβλιοθήκη του κύριου υποκαταστήματος στην παραγωγή, εκτός εάν καταφύγετε σε προηγούμενη έκδοση.
2. Το πλαίσιο Yew
Πουρνάρι είναι ένα πλαίσιο Rust για τη δημιουργία εφαρμογών ιστού πολλαπλών νημάτων διεπαφής χρησιμοποιώντας το WebAssembly. Σας επιτρέπει να γράψετε τον κώδικα Rust και να μεταφέρετε τον κώδικα Rust σε WASM, ο οποίος μπορεί να εκτελεστεί σε οποιαδήποτε συσκευή με υποστήριξη WASM. Το Yew είναι διαλειτουργικό με JavaScript (μπορείτε να χρησιμοποιήσετε το δικό σας πακέτα npm), και το πλαίσιο παρέχει μια μακροεντολή για αλληλεπίδραση με στοιχεία HTML με το Rust, όπως το JSX στο React.
Μπορείτε να ξεκινήσετε με το Yew χρησιμοποιώντας το πακέτο εφαρμογής Trunk ή το WASMPack. Δείτε την τεκμηρίωση για το πώς να ξεκινήσετε, να αλληλεπιδράσετε με HTML και DOM API και μεταφέρετε τον κώδικα Rust στο WebAssembly.
Το έργο Yew είναι πολύ δημοφιλές, με πάνω από είκοσι χιλιάδες αστέρια στο Github και πέντε χιλιάδες χρήστες. Το Yew είναι σταθερό, αλλά το έργο δεν είναι έτοιμο για παραγωγή και η βάση κώδικα αλλάζει, επομένως ενδέχεται να αντιμετωπίσετε σφάλματα και διακοπές.
3. Η βιβλιοθήκη Percy
Πέρσι είναι μια συλλογή από βιβλιοθήκες Rust για τη δημιουργία εφαρμογών web frontend που υποστηρίζονται από το WebAssembly. Ο Percy υποστηρίζει την άμεση απόδοση από την πλευρά του διακομιστή. Το έργο διαπρέπει στη δημιουργία εφαρμογών μιας σελίδας φιλικές προς τις μηχανές αναζήτησης (SPA).
Ο Πέρσι παρέχει ένα html! μακροεντολή για τη δημιουργία εικονικών DOM. Μπορείτε να τα αποδώσετε σε στοιχεία DOM στο frontend ή να τα χρησιμοποιήσετε για λειτουργίες στο backend της εφαρμογής σας.
Ο Percy είναι ακόμα πολύ νέος, και παρόλο που η βιβλιοθήκη δεν είναι έτοιμη για παραγωγή, το έργο είναι πολύ δημοφιλές, με πάνω από δύο χιλιάδες αστέρια στο Github.
4. Το Πλαίσιο Σπόρων
Σπόρος είναι ένα πλαίσιο πλήρους στοίβας WebAssembly που περιλαμβάνεται με μπαταρίες για τη δημιουργία γρήγορων εφαρμογών ιστού στο Rust. Το πλαίσιο Seed παρέχει ένα σύστημα προτύπων που χρησιμοποιεί μια σύνταξη μακροεντολών αντί για τη σύνταξη που μοιάζει με JSX του Yew. Διαθέτει επίσης ενσωματωμένο κρατικό σύστημα διαχείρισης για την ενίσχυση της παραγωγικότητας.
Το Seed είναι καινούργιο και τα προκατασκευασμένα εξαρτήματα όπως οι συλλέκτες ημερομηνίας είναι σπάνια. Αν και το Seed δεν υποστηρίζει επί του παρόντος απόδοση από την πλευρά του διακομιστή, το έργο στοχεύει να το συμπεριλάβει σύντομα. Διαφορετικά, το Seed είναι πλήρες με δυνατότητες και μπορείτε να δημιουργήσετε εφαρμογές web έτοιμες για παραγωγή με αυτό. Το Seed χρησιμοποιεί επίσης την αρχιτεκτονική Elm με ελάχιστη διαμόρφωση. Μπορείτε να δημιουργήσετε και να ομαδοποιήσετε τις εφαρμογές σας χρησιμοποιώντας το Trunk, το Web Bundler ή το Seeder.
Μπορείτε επίσης να χρησιμοποιήσετε το Seed για το backend της web εφαρμογής σας. Το Seed παρέχει λειτουργικότητα για τη δημιουργία REST ή GraphQL API με υποστήριξη δρομολόγησης και ελέγχου ταυτότητας και ενσωμάτωση AuthO.
MoonZoon είναι ένα εύχρηστο πλαίσιο πλήρους στοίβας που υποστηρίζεται από WebAssembly για εφαρμογές frontend και backend. Μπορείτε να γράψετε Rust χωρίς να χρειάζεται να γράψετε HTML, CSS και JavaScript στο frontend ή REST, GraphQL ή SQL στο backend. Το MoonZoon είναι γρήγορο, απλό, επεκτάσιμο και φιλικό προς το SEO. Παρέχει μια εφαρμογή CLI για τη δημιουργία εφαρμογών ιστού που είναι εύκολο να αναπτυχθούν.
Η φιλοσοφία του έργου MoonZoon είναι η δημιουργία ενός πολύ απλού εργαλείου χωρίς ειδική ορολογία, τεχνητά εμπόδια ή δόγματα. Χρησιμοποιώντας το, μπορείτε να εστιάσετε στη δημιουργία εφαρμογών ιστού όπως θέλετε. Θα χρειαστεί να έχετε εγκαταστήσει το WASM-Pack για να δημιουργήσετε το μπροστινό μέρος. Το backend μιας εφαρμογής MoonZoon εκτελείται σε Actix-web και Warp, και τα δύο δημοφιλή πλαίσια υποστήριξης Rust. Το MoonZoon παρέχει επίσης λειτουργία ελέγχου ταυτότητας.
Η τεκμηρίωση του MoonZoon δεν φιλοξενείται αυτήν τη στιγμή. Για να χρησιμοποιήσετε το εργαλείο, μπορείτε να ελέγξετε τα αρχεία σήμανσης στο έγγραφα φάκελο μέσω του έργου Αποθετήριο GitHub.
Μπορεί να έχετε αλληλεπιδράσει με το WebAssembly
Το WebAssembly κυκλοφόρησε για πρώτη φορά το 2017 και η Κοινοπραξία World Wide Web (W3C) έκανε το WebAssembly πρότυπο ιστού το 2019. Από το 2019, εταιρείες όπως η Cloudflare, η Google και το Dropbox έχουν χρησιμοποιήσει την τεχνολογία στην παραγωγή.
Το Google Earth χρησιμοποιεί το WebAssembly, το Cloudflare το χρησιμοποιεί για τους Cloudflare Workers και το Dropbox χρησιμοποιεί το WebAssembly για έναν κωδικοποιητή στον ιστότοπό του.