شۇنىڭۋىلەن ئەگەردە Rust نى WebAssembly بىلەن ئەپچاقتا ئىجرا قىلالىساقچۇ؟
ئەلۋەتتە ياخشى بولىدۇدە،
مەسىلەن قانداق ياخشى بولىدۇ؟
- ئەڭ يۇقىرى بىخەتەرلىك، بەزى دەششەت مەخپىي ھېسابلاش ئۇسۇللىرىمىزنى مۇشۇ تىلدا يازساق بولىدۇ،
- ئەڭ يۇقىرى ئىجرا بولۇش تىزلىكى، ۋاقىت سەرىپ قىلىدىغان ھېسابلاش ئۇسۇللىرىنى چاپتۇرۇش، ھەتتاكى ئەپچاقتا JavaScript ماتورىنى يەنە ئىجرا قىلىپ دىنامىك كودنى ئەمەلگە ئاشۇرۇش،
شۇنىڭۋىلەن باشلىدۇق،
wasm-pack build -- target web
بىلەن Compile قىلغاندىن كىيىن ھاسىللانغان كود
ئاۋال تور كۆرگۈچتە بىر ئىجرا قىلىپ باقاي ھە، ئۇنىڭ ئۈچۈن ئازراق Bootstrap كودلارنى html ھۆججەت قىلىپ يېزىۋالدىم:
سىناپ باقاي ھە
ئىشنى قىلىپ تور كۆرگۈچتە مۇۋاپىقىيەتلىك چاپتى ئا چىققان خاتالىقنى ھازىر ئوڭشىمايلى، ئەمدى ئەپچاقتا چاپتۇرىلى:
ۋىندوۋس تەقلىدلىگۈچتىكى Wechat dev tools:
"پەچەت" ھەي،
ئەمما ئازراقمۇ پەچەت ئەمەس، چۈنكى بۇ "پەچەتلىك" ئون ئۈچ سىكۇنىتقا بارمايلا خازانغا ئايلىنىدۇ، چۈنكى تىڭشۈننىڭ قىغ قوتۇر Wechat dev tools سىدا بۇ كود ئىشلىگەن بىلەن تېلېفونغا ئەپچاققا يۈكلىسىڭىز مۇنداق خاتالىق چىقىدۇ:
ئەپسۇس يۈكلىمەي تۇرۇپلا مۇلازىمىتىرسىغىمۇ يوللىيالمىدى...
Dev tools نى ئۆچۈرۈپ ئاچقاندىن كىيىن ئۇ خاتالىق يوقىدى، ئەمما يېڭى دەلتىدەك خاتالىق چىقتى،
ئەمەلىيەتتە سىز يوق دىگەن ھۆججەتنىڭ بارلىقىنى جەزىملەشتۈرەلەيسىز، بۇ بولسا ئەمەلىيەتتە بىر DevTools دىكى Bug بولۇپ كودىڭىزدا خاتالىق بولسىلا ئاشۇ ھۆججەتنى يوق دەپ تۇرىۋالىدۇ،
تىڭشۈن ئۆزى بىر بەلەن خەلىقئارالىق ئۆلچەملەرنى بۇزۇپ پروگراممىرلارنى مەجبۇرىي ئۆزىنىڭ قىلتاقلىرىغا چۈشۈرۈشكە ئامراق،
بىز ئاۋال تىڭشۈننى بىر تەبرىكلەيلى!
سىزنى تەبرىكلەيمىز تىڭشۈن، بىزگە ئاۋارچىلىق تېپىپ بېرىپ مەقسىدىڭىزگە يەتتىڭىز، بۇ دەل سىز قىلماقچى بولغان ئىش شۇ.
congratulations tencent, i'm on trouble, you did it! that is why you are change Javascript standard in your environment right?
恭喜腾讯,我遇到了麻烦,你做到了!这就是为什么你要在你的环境中改变Javascript标准,对吗?
چۈنكى ئەپچاق مۇھىتى بىلەن تور كۆرگۈچ مۇھىتى ئوخشىمايدۇ، ئەپچاق بىر قسىىم ئۆلچەملىك JavaScript standard دىكى فۇنكىسىيەلەرنى چىقىرۋەتكەن،
بىردەم تەتقىق قىلىش ئارقىلىق URL ئىسىملىك class نى ئىشلەتكىلى بولمايدىغانلىقى جەزىملەشتۈرۈلدى، ۋە WebAssembly نى يۈكلەيدىغان يېرىنى ئەسلى كودنى تەھرىرلەپ قايتا ئۆزگەرتىپ چىقتۇق:
ماۋۇلارنى ماۋۇنىڭغا:
Dev tools دە چاپتى، ئەمما ھەقىقى ئۈسكۈنىدە خاتالىق چىقتى:
ئۆلگۈر، دىمەك تېلېفوندىكى ئەپچاقتا TextEncodere, TextDecoder لار يوق دىگەن گەپ، شۇنىڭۋىلەن Github دىن باشقىلار يېزىپ قويغان بىر ياماق ھۆججەتنى تاپتىم ۋە TextEncoder, TextDecoder لارنى ئىشلەتكەن يەرگە ئالماشتۇرۇپ قويدۇم:
يامان ئادېرسى: // https://github.com/MaxArt2501/base64-js/blob/master/base64.js
تامام.
خۇلاسە:
- ئەمەلىيەتتە ئەپچاق بىلەن Web كە ئىشلەتكەن WebAssembly ئوخشاش، پەقەت تىڭشۈن ئۆزى يەنە بىر قىتىم پروگراممىرلارنى كونتىرول قىلىۋېلىش ھەۋىسى تۇتۇپ كېتىپ بەزى بىر ئۆلچەملىك Web مۇھىتىدىكى نەرسىلەرنى چىقىرۋەتكەن، شۇنىڭۋىلەن Js تەرەپ نۇرمال ئىشلىمىگەن،
- يەنە تىڭشۈننىڭ ئەخلەت Dev-Tools سى ئەمەلىيەتتە پروگراممىرلارغا مەسىلە تېپىپ بەرگەن،
- بىز ئاخىرىدا:
WebAssembly.instantiate
نى WXWebAssembly.instantiate
غا ئالماشتۇرۇش ۋە
TextEncoder
, TextDecoder
لارنى ياماق قىلىپ قوشتۇق
شۇنىڭ بىلەن نۇرمال ئىشلىدى، كودنى Github قا يوللاپ قوياي.
https://dev.subat.cn/Ug-Projekt/rust-wechatminiapp
--- شىنجاڭ ئالماس يۇمشاق دېتال چەكلىك شىركىتى https://almas.biz https://mulazim.com