بناء تطبيقات متصفح الواجهة الأمامية مع Rust + Webassembly. يدعم عرض جانب الخادم.
هذا ReadMe يعطي مقدمة الضوء إلى بيرسي. تحقق من كتاب بيرسي للسير بالكامل.
يجمع بيرسي على الصدأ المستقر مع تحذير واحد:
في الصدأ الليلي ، يمكنك إنشاء العقد النصية بدون اقتباسات.
// Nightly Rust does not require quotes around text nodes.
html ! { <div> My text nodes here </div> } ;على الصدأ المستقر ، مطلوب علامات اقتباس.
// Stable Rust requires quotes around text nodes.
html ! { <div> { "My text nodes here " } </div> } ;سوف يزول هذا الاختلاف بمجرد استقرار مواقع الامتداد في مشكلة تتبع الصدأ - صدأ.
أفضل طريقة للوصول إلى السرعة هي التحقق من كتاب Percy ، ولكن إليك مثال أساسي للغاية للحصول على قدميك.
يسمح لك Percy بإنشاء تطبيقات لا تحتوي إلا على عرض من جانب الخادم ، أو تقديم جانب العميل فقط ، أو تقديم جانب الخادم والعميل.
إليك مثالًا سريعًا سريعًا على عرض جانب العميل الذي يمكنك تجربته الآن:
أولاً ، قم بإنشاء مشروع جديد باستخدام
cargo new client-side-web-app --lib
cd client-side-web-appأضف الملفات التالية إلى مشروعك.
touch build.sh
touch index.html
touch app.cssهذا هو بنية الدليل:
.
├── Cargo.toml
├── build.sh
├── index.html
├── app.css
└── src
└── lib.rsالآن قم بتحرير كل ملف بالمحتويات التالية:
# contents of build.sh
#! /bin/bash
cd " $( dirname " $0 " ) "
mkdir -p public
cargo build --target wasm32-unknown-unknown
wasm-bindgen target/wasm32-unknown-unknown/debug/client_side_web_app.wasm --no-typescript --target web --out-dir ./public --debug
cp index.html public/
cp app.css public/ // contents of src/lib.rs
use wasm_bindgen :: prelude :: * ;
use web_sys ;
use percy_dom :: prelude :: * ;
# [ wasm_bindgen ]
struct App {
pdom : PercyDom
}
# [ wasm_bindgen ]
impl App {
# [ wasm_bindgen ( constructor ) ]
pub fn new ( ) -> App {
let start_view = html ! { <div> Hello </div> } ;
let window = web_sys :: window ( ) . unwrap ( ) ;
let document = window . document ( ) . unwrap ( ) ;
let body = document . body ( ) . unwrap ( ) ;
let mut pdom = PercyDom :: new_append_to_mount ( start_view , & body ) ;
let greetings = "Hello, World!" ;
let end_view = html ! {
// Use regular Rust comments within your html
<div class= [ "big" , "blue" ] >
/* Interpolate values using braces */
<strong> { greetings } </strong>
<button
class= "giant-button"
onclick=|_event| {
web_sys :: console :: log_1 ( & "Button Clicked!" . into ( ) ) ;
}
>
// No need to wrap text in quotation marks (:
Click me and check your console
</button>
</div>
} ;
pdom . update ( end_view ) ;
App { pdom }
}
} # contents of Cargo.toml
[ package ]
name = " client-side-web-app "
version = " 0.1.0 "
authors = [ " Friends of Percy " ]
edition = " 2018 "
[ lib ]
crate-type = [ " cdylib " ] # Don't forget this!
[ dependencies ]
wasm-bindgen = " 0.2 "
js-sys = " 0.3 "
percy-dom = " 0.9 "
[ dependencies . web-sys ]
version = " 0.3 "
features = [
" Document " ,
" MouseEvent " ,
" Window " ,
" console "
] <!-- contents of index.html -->
<!DOCTYPE html >
< html lang =" en " >
< head >
< meta charset =" UTF-8 " >
< meta name =" viewport " content =" width=device-width, initial-scale=1 " >
< link rel =" stylesheet " type =" text/css " href =" app.css " />
< title > Client Side Demo </ title >
</ head >
< body style =' margin: 0; padding: 0; width: 100%; height: 100%; ' >
< script type =" module " >
import init , { App } from '/client_side_web_app.js'
async function run ( ) {
await init ( '/client_side_web_app_bg.wasm' )
new App ( )
}
run ( )
</ script >
</ body >
</ html > /* contents of app.css */
. big {
font-size : 30 px ;
}
. blue {
color : blue;
}
. giant-button {
font-size : 24 px ;
font-weight : bold;
}الآن الجري
# Used to compile your Rust code to WebAssembly
cargo install wasm-bindgen-cli
# Or any other static file server that supports the application/wasm mime type
cargo install https
chmod +x ./build.sh
./build.sh
# Visit localhost:8080 in your browser
http ./public --port 8080ويجب أن ترى ما يلي:

عمل جميل!
تطبيق الويب المتماثل
مكونات عرض اختبار الوحدة
افتح مشكلة أو علاقات عامة إذا كان لديك فكرة عن مثال مفيد!
مستندات بيرسي-دوم واجهة برمجة التطبيقات
HTML-MACRO API مستندات
بيرسي-ريتر API مستندات
أشعر دائمًا بالحرية في فتح القضايا و PRS مع أي أسئلة / أفكار لديك!
حتى لو كان الأمر أساسيًا أو بسيطًا - إذا كان هناك سؤال في ذهنك ، فلا يمكنك الإجابة على نفسك بسرعة ، فهذا فشل في الوثائق.
يمكن العثور على مزيد من المعلومات حول كيفية المساهمة في قاعدة كود في القسم المساهم في كتاب بيرسي!
لتشغيل جميع اختبارات الوحدة والتكامل والمستعرض ، الاستيلاء على التبعيات ثم:
./test.shمعهد ماساتشوستس للتكنولوجيا