2016-12-01 7 views

उत्तर

15

हां, यह संभव है।

वेबसाइस्प्लर्स टूलचैन का उपयोग करते समय जावास्क्रिप्ट एपीआई कॉल करने के लिए उस विशिष्ट टूलचेन पर निर्भर करता है। यह प्रभावी रूप से एफएफआई का एक रूप है: सी ++ कोड से ऐसा लगता है कि आप बाहरी फ़ंक्शन को कॉल कर रहे हैं, लेकिन टूलचैन पुल एम्बेडर (यहां, ब्राउजर की जावास्क्रिप्ट) पर हैं। कुछ उदाहरण:

toolchains ऐसे Emscripten के रूप में स्वचालित रूप से एक importObjectWebAssembly.instantiate के लिए (के साथ उत्पन्नऔर .js फाइलें)/अधिकांश आंतरिक वेबएस्प्लोर विवरण आमतौर पर छुपाए जाते हैं (मैं उन्हें नीचे दस्तावेज करता हूं)।

यह डिज़ाइन आपको जावास्क्रिप्ट एपीआई नहीं, बल्कि जावास्क्रिप्ट कोड को कॉल करने की अनुमति देता है। इसलिए आप WebAssembly से अपना खुद का जावास्क्रिप्ट कोड कॉल कर सकते हैं। टूलचेन्स वेब एपीआई के सामान्य सेट को संभालने में आसानी से आसान बनाता है, कभी-कभी क्रॉस-प्लेटफ़ॉर्म तरीके से, उदा। SDL2 ऑडियो, कीबोर्ड, माउस, जॉयस्टिक, और ग्राफिक्स करता है।

new Instance(moduleObject [, importObject]) 

Promise<{module:WebAssembly.Module, instance:WebAssembly.Instance}> 
    instantiate(BufferSource bytes [, importObject]) 

WebAssembly binary format एक import section जहां (जैसे LLVM के रूप में एक संकलक के माध्यम से) की घोषणा में शामिल हैं:

आंतरिक विवरण

WebAssembly के JavaScript API आप WebAssembly.Instantiate निर्माता को an importObject गुजरती हैं और WebAssembly.instantiate समारोह की अनुमति देता है आयात जो इसका उपयोग करेगा। इनमें से प्रत्येक आयातित फ़ील्ड importObject में देखा गया है, और can be invoked वेबसाइस्प्लर्स के call और call_indirect ऑपोड के माध्यम से कार्य करता है।

इसलिए आप मनमानी जावास्क्रिप्ट को कॉल कर सकते हैं, जो बदले में आप चाहते हैं कि कोई भी वेब एपीआई कॉल कर सकते हैं। भविष्य में, WebAssembly gain capabilities which allow the embedder expose APIs directly हो सकता है, इसमें एम्बेड किए गए ब्राउज़र में डीओएम, कैनवास, इवेंट इत्यादि शामिल हो सकते हैं।

संबंधित मुद्दे