2016-01-08 13 views

Antwort

8

Ich weiß, das eine späte Antwort, aber Sie haben einige Optionen:

  • native node modules können Sie in C++ und Objective (oder Swift) und setzen eine API zu node.js schreiben mit v8. Dies gibt Ihnen viel Flexibilität und Kraft, benötigt aber die meiste Zeit um sich zu entwickeln.

  • NodObjC ist ein natives Knotenmodul, mit dem Sie mit der ObjC-Laufzeit interagieren können. Ich habe es nie benutzt, aber es scheint wie ein solides Projekt und würde vereinfachen, was auch immer Sie versuchen zu tun. Eine ähnliche Option ist node-ffi. Das Framework, auf das Sie verwiesen haben, sieht jedoch wie eine ObjC-API aus. Daher ist es nicht sicher, ob das für Ihren speziellen Anwendungsfall funktioniert.

  • Für einfache Sachen können Sie node-applescript verwenden. Ich habe nur ein wenig mit applescript gespielt, aber ich war überrascht über einige der Dinge, die man damit machen kann. Zum Beispiel können Sie damit festlegen, dass Ihre App bei der Anmeldung gestartet wird (siehe node-auto-launch). Obwohl es im Vergleich zu oben begrenzt ist, wenn es tut, was Sie wollen, ist es einfacher und erfordert kein Kompilieren, was nett ist. Beachten Sie, dass dies unter der Haube child_process verwendet wird, um einen neuen Prozess zu erzeugen, um das AppleScript auszuführen. Das könnte einige Konsequenzen für alles haben, was Sie versuchen zu tun.

  • Sie können auch einfach den Knoten child_process verwenden, wenn die OSX-API , die Sie verwenden möchten, über eine gute CLI verfügt. Der Vorteil ist die Einfachheit, der Nachteil ist, dass Sie die ausgegebenen Strings in aussagekräftige Datenstrukturen zerlegen müssen, was nach meiner Erfahrung mäßig schwierig sein kann.

0

Sie können auch die exec-Funktion von child_process verwenden Skripts oder Terminal-Befehl von Ihnen Elektron App auszuführen.

Sie können auch leicht überprüfen, auf welcher Plattform Sie Ihre App auf ist RUNNUNG:

var isWin = /^win/.test(process.platform); 
    if(isWin){ 
    //windows 
    }else{ 
    //macos 
    } 

Sie können auch Skript ausführen, die Sie für OSX Anwendungen erstellt, die die OSX native API in schnellen verwenden, nachdem Sie sie bauen:

exec(path.join(__dirname, './build-scripts/Network -agr1 ' + value1 + ' -agr2 ' + value2), 
     function (error, stdout, stderr) { 
     console.log('stdout: ' + stdout); 
     console.log('stderr: ' + stderr); 
     if (error !== null) { 
      console.log("Fail to execute script"+ error); 
     } else { 
      console.log("ok") 
     } 
     }); 
+0

Nitpick (sorry) ... 'process.platform' kann immer nur zurückkehren:' darwin', 'freebsd',' linux', 'sunos' oder' win32'. Die Suche nach Fenstern ist so einfach wie 'process.platform === 'win32''. Siehe https://nodejs.org/api/process.html#process_process_platform – ccnokes

1

Sie können auch ffi verwenden, um native Bibliotheken direkt über Javascript aufzurufen.