2013-02-20 18 views
5

Ho un'applicazione desktop con un backend C++ e un front-end HTML5/JS. Al momento stiamo utilizzando Google V8 o Mac Webview e Objective-C per consentire a Javascript e C++ di comunicare. C'è un modo per farli parlare direttamente tra loro senza il middleware?Javascript comunica con C++

cercando di realizzare:

  1. variabili Share.
  2. Funzioni di chiamata da C++ a JS.
  3. Funzioni di chiamata da JS a C++.

Ho provato a cercare su Google questo e tutto indica le soluzioni di cui sopra.

+0

Interfaccia RPC HTTP? Dai un esempio di chiamata alle funzioni JS da C++. – Aesthete

+0

Non capisco. Se il backend attuale è codificato in C++, perché non compilarlo e chiamarlo da qualche endpoint middleware sul server? Il middleware può essere un qualsiasi linguaggio che ti permetta di eseguire i binari compilati no? – Vinay

+0

Se ho capito bene, vuoi un middleware C++? – Vinay

risposta

5

Si potrebbe provare a utilizzare lo Protocol Buffers di Google che consente di creare oggetti dati che vengono compilati in oggetti C++. È quindi possibile utilizzare uno dei seguenti progetti dalla loro wiki utilizzare protobuffers con javascript:

+0

Come è usato per chiamare funzioni e condividere variabili tra il browser e l'applicazione. – Aesthete

+0

Sembra promettente. Grazie – Rob

3

Il software suona come un po 'come una web app, senza internet in la metà. NodeJS potrebbe fare un buon middleware in questo caso, è possibile farlo write modules in C++ e usarli in javascript. Non ho ancora fatto questo. Un short example :)

e ora un paio di anni strato abbiamo la Electron project, che è sostanzialmente il precedente, ma con una vista basato sul web Chrome.

0

Si prega di dare un'occhiata a questo, io sono il proprietario

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

libjspp permette un facile interfacciamento & interagente di C++ con javascript spidermonkey 1.8.5? Non invadente a C++ & javascript world allo stesso tempo. Utile per le applicazioni che desiderano incorporare & Estendere Javascript in modo orientato agli oggetti. Interfaccia molto sottile praticamente senza sovraccarico utilizzando i modelli C++.

Sono

1

Ora è possibile utilizzare Electron per ottenere fondamentalmente un browser Web Chrome con accesso diretto all'API Node.js. Quindi è possibile utilizzare nbind per chiamare facilmente il codice C++ da JavaScript. In questo modo condividono entrambi lo stesso thread e heap.

si dichiara la classe C++ con l'aggiunta di qualcosa di simile a un file sorgente C++ 11:

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

    method(Y); 
    method(Z); 
} 

che crea associazioni per una classe X con un costruttore di prendere 2 int e metodi Y e Z con abbastanza molto qualsiasi tipo di argomenti e valori di ritorno facoltativi.

nbind viene fornito con un esempio per come impacchettare il codice C++ in un addon Node.js, da utilizzare in Electron.

Problemi correlati