2013-02-20 10 views
5

के साथ संवाद मैं एक सी ++ बैकएंड और एक एचटीएमएल 5/जे एस सामने अंत है कि एक डेस्कटॉप अनुप्रयोग है। वर्तमान में हमें जावास्क्रिप्ट और सी ++ को संवाद करने की अनुमति देने के लिए Google V8 या Mac Webview और Objective-C का उपयोग करना है। क्या मिडलवेयर के बिना सीधे एक-दूसरे से बात करने का कोई तरीका है?जावास्क्रिप्ट सी ++

पूरा करने के लिए कोशिश कर रहा है:

  1. शेयर चर।
  2. सी ++ जे एस से कॉल कार्य।
  3. सी ++ के लिए जे एस से कॉल कार्य।

मैंने इसे गुगल करने का प्रयास किया है और सब कुछ उपरोक्त समाधानों को इंगित करता है।

+0

HTTP आरपीसी इंटरफ़ेस? सी ++ से जेएस कार्यों को कॉल करने का एक उदाहरण दें। – Aesthete

+0

मुझे यह नहीं मिला। यदि वास्तविक बैकएंड को सी ++ में कोड किया गया है, तो इसे संकलित क्यों न करें और इसे सर्वर पर कुछ मिडलवेयर एंडपॉइंट से कॉल करें? मिडलवेयर कोई भी भाषा हो सकती है जो आपको संकलित बाइनरी को निष्पादित करने की अनुमति देती है? – Vinay

+0

अगर मैं आपको सही ढंग से समझता हूं, तो आप एक सी ++ मिडलवेयर चाहते हैं? – Vinay

उत्तर

5

आप का उपयोग कर की कोशिश कर सकते गूगल के Protocol Buffers, जिसमें आप डेटा वस्तुओं है कि सी ++ वस्तुओं के लिए संकलित हो बनाने के लिए अनुमति देता है। इसके बाद आप अपने wiki से निम्नलिखित परियोजनाओं में से एक इस्तेमाल कर सकते हैं जावास्क्रिप्ट के साथ protobuffers उपयोग करने के लिए:

+0

यह फ़ंक्शंस को कॉल करने और ब्राउज़र और एप्लिकेशन के बीच चर साझा करने के लिए कैसे उपयोग किया जाता है। – Aesthete

+0

यह आशाजनक लग रहा है। धन्यवाद – Rob

3

आपका सॉफ्टवेयर, एक वेब अनुप्रयोग की तरह एक बहुत की तरह लगता है में इंटरनेट के बिना मध्य। NodeJS इस मामले में अच्छा मिडलवेयर कर सकता है, आप सी ++ में इसके लिए write modules कर सकते हैं, और उन्हें जावास्क्रिप्ट में उपयोग करें। मैंने अभी तक यह नहीं किया है। एक short example :)

और अब कुछ साल परत हम Electron project, जो मूल रूप से ऊपर, लेकिन एक क्रोम आधारित वेब दृश्य के साथ है।

0

कृपया इस पर एक नजर है, मैं मालिक

http://code.google.com/p/libjspp/

libjspp जावास्क्रिप्ट Spidermonkey 1.8.5 के साथ सी के ++ बातचीत इंटरफ़ेस & आसान की अनुमति देता है कर रहा हूँ? एक ही समय में सी ++ & जावास्क्रिप्ट दुनिया के लिए गैर घुसपैठ। अनुप्रयोगों जो & एम्बेड करने के लिए वस्तु उन्मुख तरीके से जावास्क्रिप्ट का विस्तार चाहते हैं के लिए उपयोगी। सी ++ टेम्पलेट्स का उपयोग करके बहुत पतला इंटरफ़ेस वर्चुअल रूप से कोई ओवरहेड नहीं है।

मैं कर रहा हूँ

1

मुझे लगता है कि

के लिए एक पुस्तकालय लिखा ग के लिए https://skywarpcpp.wordpress.com

SKYWARP ++ डाटा स्ट्रीमिंग और RPC संबल सर्वर पुस्तकालय के लिए एक नजर डालें ++ अनुप्रयोग

आप इसे डाउनलोड कर सकते हैं GitHub

https://github.com/xjrueda/skywarp_cpp

1

अब आप Electron का उपयोग मूल रूप से Node.js एपीआई के लिए सीधी पहुँच के साथ एक क्रोम वेब ब्राउज़र प्राप्त करने के लिए कर सकते हैं। तो फिर तुम nbind का उपयोग आसानी से जावास्क्रिप्ट से सी ++ कोड कॉल करने के लिए कर सकते हैं। इस तरह दोनों एक ही थ्रेड और ढेर साझा करते हैं।

आप एक सी ++ 11 स्रोत फ़ाइल के लिए कुछ इस तरह जोड़कर सी ++ वर्गों की घोषणा:

NBIND_CLASS(X) { 
    construct<int, int>(); 

    method(Y); 
    method(Z); 
} 

एक निर्माता 2 ints और तरीकों वाई लेने और सुंदर के साथ जेड के साथ एक दसवीं कक्षा के लिए बाइंडिंग बनाता है यही कारण है कि किसी भी प्रकार के तर्क और वैकल्पिक वापसी मूल्य।

nbind इलेक्ट्रॉन में उपयोग के लिए अपने C++ कोड को Node.js एडन में पैकेज करने के तरीके के उदाहरण के साथ आता है।

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