5 Rust WebAssembly Frameworks ձեր հաջորդ հավելվածի համար


Բացահայտեք, թե ինչպես օգտագործել WebAssembly-ի հզորությունն ու արագությունը ձեր Rust հավելվածներից:

WebAssembly (WASM) շարժական, ցածր մակարդակի երկուական կոդի ձևաչափ է, որն աշխատում է ժամանակակից բրաուզերների վրա, ինչպես JavaScript-ը: Փաստորեն, WebAssembly-ն նաև փոխգործունակ է JavaScript-ի հետ: Ծրագրի հիմնական կոդերը կարող եք տեղափոխել WebAssembly և գործարկել այն զննարկիչում JavaScript-ով կամ առանց դրա:

Rust-ը արագ է, ինչը լեզուն դարձնում է կենսունակ տարբերակ WebAssembly ծրագրեր ստեղծելու համար: Կան բազմաթիվ Rust գրադարաններ և շրջանակներ, որոնք կօգնեն ձեզ, որոնք աջակցում են այն գործիքներին, որոնք դուք օգտագործում եք վեբ հավելվածներ ստեղծելու համար:

1. Sycamore գրադարանը

Sycamore-ը արագ, էրգոնոմիկ և ինտուիտիվ SolidJS-ի նման ռեակտիվ շրջանակ է: Դուք կարող եք այն օգտագործել Rust-ում վեբ հավելվածներ ստեղծելու համար, որոնք օգտագործում են WebAssembly-ի հզորությունը: Sycamore-ն ապահովում է այն ֆունկցիոնալության մեծ մասը, որն անհրաժեշտ է Rust-ում վեբ հավելված ստեղծելու համար, այնպես որ ձեզ հարկավոր չի լինի գրել JavaScript:

Sycamore-ը նաև տրամադրում է երթուղիչ և JavaScript փոխգործունակություն Wasm-Bindgen-ի միջոցով՝ օգտագործելով JS-sys կամ Web-Sys: Նախագիծը մտադիր է շուտով թողարկել թեստավորումը և CSS ֆունկցիոնալությունը:

Sycamore-ն օգտագործելու համար ձեզ անհրաժեշտ կլինի Rust-ի վերջին տարբերակը՝ wasm32-անհայտ-անհայտ թիրախը: Ձեզ նույնպես անհրաժեշտ կլինի Trunk՝ ձեր հավելվածը ստեղծելու և փաթեթավորելու համար: Քանի որ Sycamore-ը նոր է, ռիսկային կլինի օգտագործել հիմնական մասնաճյուղի գրադարանը արտադրության մեջ, բացառությամբ, եթե դուք դիմեք ավելի վաղ թողարկման:

2. The Yew Framework

Yew-ը Rust շրջանակ է WebAssembly-ի միջոցով բազմաթելային վեբ հավելվածներ ստեղծելու համար: Այն թույլ է տալիս գրել Rust կոդը և փոխանցել ձեր Rust կոդը WASM-ին, որը կարող է աշխատել WASM աջակցությամբ ցանկացած սարքի վրա: Yew-ը համատեղելի է JavaScript-ի հետ (կարող եք օգտագործել ձեր npm փաթեթները), և շրջանակը տրամադրում է մակրո Rust-ի հետ HTML տարրերի հետ փոխազդելու համար, ինչպես JSX-ը React-ում:

Դուք կարող եք սկսել Yew-ի հետ՝ օգտագործելով Trunk հավելվածի փաթեթը կամ WASMPack-ը: Ստուգեք փաստաթղթերը, թե ինչպես սկսել, փոխազդել HTML և DOM API-ների հետ և փոխարկել ձեր Rust կոդը WebAssembly-ին:

Yew նախագիծը շատ տարածված է, ավելի քան քսան հազար աստղ Github-ում և հինգ հազար օգտվող: Yew-ը կայուն է, բայց նախագիծը պատրաստ չէ արտադրությանը, և կոդերի բազան փոխվում է, ուստի կարող եք սխալներ և ընդմիջումներ առաջացնել:

3. Պերսի գրադարան

Percy-ն Rust գրադարանների հավաքածու է WebAssembly-ի կողմից սնուցվող ճակատային վեբ հավելվածներ ստեղծելու համար: Percy-ն աջակցում է սերվերի կողմից ակնթարթային մատուցումը: Ծրագիրը գերազանցում է որոնման համակարգերին հարմար մեկ էջանոց հավելվածների (SPAs) ստեղծման գործում:

Percy-ն ապահովում է html! մակրո վիրտուալ DOM-ներ ստեղծելու համար: Դուք կարող եք դրանք վերածել DOM տարրերի ճակատային մասում կամ օգտագործել դրանք ձեր հավելվածի հետնամասում գործողությունների համար:

Պերսին դեռ շատ նոր է, և չնայած գրադարանը պատրաստ չէ, նախագիծը շատ տարածված է՝ Github-ում ավելի քան երկու հազար աստղերով:

4. The Seed Framework

Seed-ը մարտկոցներով ընդգրկված, WebAssembly-ով սնուցվող ամբողջական փաթեթ է՝ Rust-ում արագ վեբ հավելվածներ ստեղծելու համար: Seed շրջանակն ապահովում է ձևանմուշային համակարգ, որն օգտագործում է մակրո շարահյուսություն Yew-ի JSX-ի նման շարահյուսության փոխարեն: Այն նաև ունի ներկառուցված պետական կառավարման համակարգ՝ արտադրողականությունը բարձրացնելու համար:

Սերմը նոր է, և նախապես պատրաստված բաղադրիչները, ինչպիսիք են ամսաթվերը, հազվադեպ են: Թեև Seed-ը ներկայումս չի աջակցում սերվերի կողմից մատուցումը, նախագիծը նպատակ ունի այն շուտով ներառել: Հակառակ դեպքում, Seed-ը լիարժեք է, և դուք կարող եք դրա հետ ստեղծել արտադրության համար պատրաստ վեբ հավելվածներ: Seed-ը նաև օգտագործում է Elm ճարտարապետությունը՝ նվազագույն կոնֆիգուրացիայով: Դուք կարող եք ստեղծել և փաթեթավորել ձեր հավելվածները՝ օգտագործելով Trunk, Web Bundler կամ Seeder:

Դուք կարող եք նաև օգտագործել Seed-ը ձեր վեբ հավելվածի հետնամասի համար: Seed-ն ապահովում է REST կամ GraphQL API-ներ կառուցելու ֆունկցիոնալությունը՝ երթուղղման և վավերացման աջակցությամբ և AuthO ինտեգրմամբ:

5. MoonZoon Toolkit

MoonZoon-ը հեշտ օգտագործման, ամբողջական փաթեթով, WebAssembly-ով աջակցվող շրջանակ է frontend և backend հավելվածների համար: Դուք կարող եք գրել Rust առանց HTML, CSS և JavaScript գրելու ճակատային մասում կամ REST, GraphQL կամ SQL հետին մասում: MoonZoon-ը արագ, պարզ, մասշտաբային և SEO-ի համար հարմար է: Այն տրամադրում է CLI հավելված՝ հեշտ տեղակայվող վեբ հավելվածներ ստեղծելու համար:

MoonZoon նախագծի փիլիսոփայությունը շատ պարզ գործիք ստեղծելն է՝ առանց հատուկ տերմինաբանության, արհեստական խոչընդոտների կամ դոգմայի: Օգտագործելով այն, դուք կարող եք կենտրոնանալ վեբ հավելվածների ստեղծման վրա, ինչպես ցանկանում եք: Առջևի վերջը կառուցելու համար ձեզ հարկավոր է տեղադրել WASM-Pack: MoonZoon հավելվածի հետնամասն աշխատում է Actix-web-ի և Warp-ի վրա, որոնք երկուսն էլ հայտնի Rust backend շրջանակներ են: MoonZoon-ը նաև տրամադրում է նույնականացման գործառույթ:

MoonZoon-ի փաստաթղթերն այս պահին հյուրընկալված չեն: Գործիքը օգտագործելու համար դուք կարող եք ստուգել նշագրման ֆայլերը docs պանակում՝ նախագծի GitHub պահոցի միջոցով:

Դուք կարող եք փոխազդել WebAssembly-ի հետ

WebAssembly-ն առաջին անգամ թողարկվել է 2017 թվականին, իսկ World Wide Web Consortium-ը (W3C) WebAssembly-ն վեբ ստանդարտ դարձրեց 2019 թվականին: 2019 թվականից ի վեր Cloudflare-ը, Google-ը և Dropbox-ն օգտագործել են տեխնոլոգիան արտադրության մեջ:

Google Earth-ն օգտագործում է WebAssembly-ն, Cloudflare-ն այն օգտագործում է Cloudflare-ի աշխատողների համար, իսկ Dropbox-ն օգտագործում է WebAssembly-ն իր կայքի կոդեկի համար: